leetcode(2)--String reverse
发布时间:2020-12-14 01:31:54 所属栏目:百科 来源:网络整理
导读:这是第一个比较麻烦的题目,字符串单词倒序,去前后空格,中间空格合并到1个,因为对java字符串不够熟练,所有都解决了就是去不了中间空格,后来查到了正则表达式才A了这个问题: public String reverseWords(String s) { int start = 0;//单词的开头下标 int
这是第一个比较麻烦的题目,字符串单词倒序,去前后空格,中间空格合并到1个,因为对java字符串不够熟练,所有都解决了就是去不了中间空格,后来查到了正则表达式才A了这个问题:
public String reverseWords(String s) { int start = 0;//单词的开头下标 int end = 0;//单词的结尾下标 char[] newString = s.toCharArray();//转化成CHAR数组 for(int i=0;i<s.length();i++) { end = i; char current = s.charAt(i); if(current == ' ' && i!= s.length()-1){ for(int j = start;j<end;j++) { int k = j-start; newString[s.length()-i+k] = s.charAt(j); } newString[s.length()-i-1] = ' '; start = i+1; }else if(i==s.length()-1) { for(int j = start;j<=end;j++) { int k = j-start; newString[s.length()-i+k-1] = s.charAt(j); } } } String result = new String(newString); while(result.startsWith(" ")) { result = result.substring(1,result.length());//去前后空格 } while(result.endsWith(" ")) { result = result.substring(0,result.length()-1); } String[] conseq = result.split("s{1,}");//百思不得其解之后在网上找来的正则表达式,第一个是JAVA转义字符,s表示空格,{1,}表示匹配第一个,合起来就是匹配第一个空格来分割字符串到数组中,避免出现多空格 ArrayList<String> list = new ArrayList<String>(); for(int i = 0;i<conseq.length;i++) { list.add(conseq[i]); } String fi = list.toString(); fi = fi.substring(1,fi.length()-1); fi = fi.replaceAll(","," "); return fi; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |