LeetCode:Reverse Words in a String

首先声明,我既不是算法大牛,也不是项目老手,只是一个非常平凡的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修改数组下标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值