LeetCode:Reverse Words in a String

来源:互联网 发布:js eval 调用函数 编辑:程序博客网 时间:2024/05/19 17:49

首先声明,我既不是算法大牛,也不是项目老手,只是一个非常平凡的CSer。

觉得自己基础不是很好,所以打算开始刷Leetcode的题,用博客来把的一些想法分享给大家。

public class Solution {    public String reverseWords(String s) {    int count=0;    int start=0;    int end=s.length();    char cs[]=s.toCharArray();    for(int i=0;i<s.length();i++){    if(cs[i]==' ')start++;    //去前面的的空格    else break;    }    for(int j=s.length()-1;j>=0;j--){    if(cs[j]==' ')end--;    //去某位空格    else break;    }    if(s==""||start==s.length())return "";    s=s.substring(start, end);   //此时s直可能单词间存在多个空格    char ss[]=s.toCharArray();    int k=s.length();    for(int i=0;i<k-1;i++){    if(ss[i]==' '&&ss[i+1]==' '){    s=s.substring(0,i+1-count).concat(s.substring(i+2-count,s.length()));       //碰到连续两个空格s就去掉空格    count++;    }    }    String[] arg=s.split(" ");         s="";    for(int i=arg.length-1;i>=0;i--){    if(i!=0)s=s+arg[i]+" ";    else s=s+arg[i];    }      return s;    }}

我第一次做Leetcode,第一道就花了很长时间。不得不说,Leetcode的题十分的严谨,对于空格的分析很详细。而且OJ很好用,可以知道是怎么错的。

在处理字符串之间的空格时,我就遇到了两个没怎么考虑的问题。

1.因为s字符串的长度一直在变,但是ss数组遍历的长度不能变,所以判断条件里不能有s.length()方法。

2.同样的的,s长度在变,但数组下标不会随之变化,所以我设了一个标志量,count修改数组下标。

0 0
原创粉丝点击