首页 > 其他分享 >151. 反转字符串中的单词

151. 反转字符串中的单词

时间:2023-11-17 09:13:04浏览次数:30  
标签:151 String res 单词 利用 反转 字符串 newS 库函数

2023-11-17

思路:

  调用库函数+利用正则表达式

  利用栈 双端队列 头插链表

  利用数组 总长度不知道 按最大长度10^4

  利用list

进阶:字符串可变时,Java不行,双指针,先整体反转,再逐个反转单词 可以将空间复杂度降低

 

数组:

class Solution {
    public String reverseWords(String s) {
 
        //调用库函数+利用正则表达式      
        //利用栈          双端队列       头插链表
        //利用数组       总长度不知道  按最大长度10^4
 
        //进阶:Java不行,双指针,先整体反转,再逐个反转单词
 
        //数组
 
        String[]  ss=new String[100*100]; 
        int j=0;
 
        int i=0;
        while(i<s.length()){
            char c=s.charAt(i);
            if(c==' '){
                i++;
                continue;
            }
            String temp="";
            while(i<s.length() && s.charAt(i)!=' '){
               temp+=s.charAt(i);
               i++;
            }
            if(!temp.equals("")){//没有这个判断好像也不影响
                ss[j]=temp;
                 j++;
            }
        }
 
        String res="";
 
        for(j=j-1;j>=0;j--){
            res+=ss[j];
            res+=" ";
        }
        
        res=res.substring(0,res.length()-1);
 
        return res;
        
        
    }
}

list:

class Solution {
    public String reverseWords(String s) {
        //栈 利用栈  很好想,很好写
 
        String newS="";
 
        List<String>  ls=new ArrayList<>();
 
        for(int i=0;i<s.length();i++){
            char c=s.charAt(i);
            String cc=c+"";
            String temp="";
            if(cc.equals(" ")){
                continue;
            }
 
            while(i<s.length()-1 && !(cc.equals(" "))){
                temp+=cc;
                i++;
                c=s.charAt(i);
                cc=c+"";
            }
 
            if(i==s.length()-1){
                c=s.charAt(i);
                cc=c+"";
                if(!cc.equals(" ")){
                    temp+=cc;
                }
            }
 
 
            ls.add(temp);
 
        }
 
        ListIterator<String> it = ls.listIterator();
 
        while (it.hasNext()) {
            it.next();
        }
 
        while(it.hasPrevious()){
            newS+=it.previous();
            newS+=" ";
        }
        newS=newS.substring(0,newS.length()-1);
 
        return newS;
    }
}

调用库函数+正则表达式:

class Solution {
    public String reverseWords(String s) {
        //栈 利用栈  很好想,很好写
 
       //调用库函数
        // 除去开头和末尾的空白字符
        s = s.trim();
        // 正则匹配连续的空白字符作为分隔符分割
        List<String> wordList = Arrays.asList(s.split("\\s+"));
        Collections.reverse(wordList);
        return String.join(" ", wordList);
 
    }
}

栈,双端队列,头插链表没写

。。。。。

标签:151,String,res,单词,利用,反转,字符串,newS,库函数
From: https://www.cnblogs.com/youye9527/p/17837831.html

相关文章

  • 7-5 字符串排序
    目录目录目录题目代码思路第一次错误尝试错误原因正确代码运行结果关于二维数组的函数引用题目本题要求编写程序,读入5个字符串,按由小到大的顺序输出。输入格式:输入为由空格分隔的5个非空字符串,每个字符串不包括空格、制表符、换行符等空白字符,长度小于80。输出格式:按照以下......
  • 字符串哈希算法
    一、字符串哈希:将一串字符串映射成一个整数,并用它来代替字符串进行比较。这样俩个字符串的比较就变成俩个整数的比较,可以将时间复杂度减少至O(1)二、哈希函数:为了将字符串转化为整数,需要一个哈希函数hash,使得以下条件成立:如果字符串s==t那么hash(s)==hash(t)。一般情况下采......
  • 求删除k个字母后的最小字典序字符串
    对于一个字符串来说我们要找删除k个字母后的最小字典序字符串来说,我们肯定是从前往后来删除,如果遇见前一个字母比后一个字母(字典序)大,那就删除前一个。对于此来说我们用一个vector来维护,vector就是存的答案,如果vector的最后一个字母比枚举的字母大,那就删除最后一个。vector<c......
  • 找出一个字符串中出现次数最多的一个字符 找出重复签到的同学
    7-2找出一个字符串中出现次数最多的一个字符找出一个字符串中出现次数最多的一个字符。输入格式:给出一个字符串,字符串的长度不大于10^6,不区分大小写,字符串中可能包含'A'-'Z','a'-'z',''字符。输出格式:分别输出出现最多次数的字符(如果为字母,输出小写字母),出现的次数,用......
  • 344. 反转字符串
    2023-11-16344.反转字符串-力扣(LeetCode)思路:        //栈    //头插链表    //o1 双指针双指针:classSolution{publicvoidreverseString(char[]s){//栈//头插链表//o1双指针inti=0;......
  • [左神面试指南] 字符串[上]篇
    CD95判断两个字符串是否互为变形词/*模拟*/publicclassCD95_1{publicstaticbooleansolution(Strings1,Strings2){if(s1.length()!=s2.length())returnfalse;int[]temp=newint[256];for(charch:s1.toCharArray())......
  • 判断一个字符串中出现次数最多的字符,统计这个次数
    varstr="stiabsstringapbs";varobj={};for(vari=0;i<str.length;i++){varkey=str[i];if(!obj[key]){obj[key]=1;}else{obj[key]++;......
  • setTimeout可以将字符串当成代码执行,类比eval函数。当遇到setTimeout或者SetInterval,
    请问以下JS代码的输出顺序是?letdate=newDate()setTimeout(()=>{console.log('1')},2000)setTimeout('console.log(2)',1000);setTimeout(function(){console.log('3')},1500);while((newDate()-date)<3000){}A报错B......
  • Java字符串、字符与数字之间的相互转换
    一、数字转字符串//将整个数字转化为字符串inti=456;//方法一Stringstr1=Integer.toString(i);System.out.println(str1);//方法二Stringstr2=i+"";System.out.println(str2)二、字符串转数字//整数方法一Stringstr="123";intnum1=Integer.parseInt(str);/......
  • 字符串分割匹配
    InfantFeedingTube-Itisusedforneonatesandpaediatricnutritionalfeeding,FoleyBalloonCatheter(GPCFoleyBalloonCatheter)-Itisaurinarytractcatheterusedforshorttermurinedrainage,SafetyIVCannula(GPCSafetyIVCannula)-SafetyIVCannula......