首页 > 试题广场 >

字符串倒序

[编程题]字符串倒序
  • 热度指数:4162 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
薯队长带着小红薯参加密室逃脱团建游戏,首先遇到了反转游戏,小红薯们根据游戏提示收集了多个单词线索,并将单词按要求加一个空格组 成了句子,最终要求把句子按单词反转解密。 说明:收集的时候单词前后可能会有多个空格,反转后单词不能有多个空格,具体见输入输出样例。

输入描述:
输入一个字符串。包含空格和可见字符。长度<=100000。 


输出描述:
输出一个字符串,表示反转后结果。
示例1

输入

the	sky	is												blue!

输出

blue! is sky the

备注:
输出一个字符串,表示反转后结果。 
 
const readline = require("readline");
 
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});
 
rl.on("line", (line) => {
 // 双指针
  const str = line.replace(/\s+/g, " ").trim();
  let i = 0;
  let j = 0;
 
  const words: string[] = [];
 
  while (j < str.length) {
    if (str[j] !== " ") {
      j++;
    } else {
      words.unshift(str.substring(i, j));
      while (j < str.length && str[j] === " ") {
        j++;
      }
 
      i = j;
    }
  }
 
  words.unshift(str.substring(i, j));
 
  console.log(words.join(" "));
  rl.close();
});


发表于 2023-03-30 23:52:53 回复(0)

因为输入的字符串会有空格键和tab键,所以投机取巧通过了~

function reverseStr(str){
    let random = Math.random();
    let arr = str.replaceAll(' ', random).replaceAll('\t',random).split(random);
    return arr.filter(item => item !== '').reverse().join(' ');
}
发表于 2023-03-25 21:00:39 回复(0)
通过了所有测试案例:
  1.     不知道为什么直接用if判断空格删不干净,最后只能用编码判断空格了
  2.     核心语句:
  !Number.isNaN(   item.charCodeAt(0)   )   end.unshift(item);
  3.    关于charCodeAt(0):
  • 自己输入的空格,返回结果是32,console.log('space::   ',' '.charCodeAt(0))  //32
  • 命令行输入的空格,返回结果是NaN,故非NaN的添加到数组头中
  • 为什么不直接:返回结果是NaN,则splice(index,1)删除item,因为删不干净

const readline=require('readline');
const rl=readline.createInterface({
    input:process.stdin,
    output:process.stdout
});
rl.on('line',(line)=>{
    let arr=line.split(' '),brr=[];
    
    arr.forEach((item,index)=>{
        if( !Number.isNaN(item.charCodeAt(0))){//非NaN的添加到数组头中
            brr.unshift(item);
        }
    })
    console.log(brr.join(' '));
})





编辑于 2020-11-08 08:32:02 回复(0)
    function reverseV(str){
        let arr = []
        str.split(" ").forEach((val,idx)=>{
            if (val != ''){
                arr.push(val)
            }
        })
        return  arr.reverse().join(' ')
    }

为什么会错啊,一个都通过不了就离谱
发表于 2020-10-28 13:24:56 回复(0)
写一个函数 放上去 根本通过不了 说是输出为空 明明有return啊 要写啥准备工作的语句吗?
发表于 2020-07-06 19:56:36 回复(1)