classSolution{ public String reverseWords(String s){ StringBuilder res = new StringBuilder(); StringBuilder word = new StringBuilder(); for (int i=0; i<s.length(); i++) { char c = s.charAt(i); if (c==' ') { res.append(reverse(word.toString())+" "); word = new StringBuilder(); } else { word.append(c); } } res.append(reverse(word.toString())); return res.toString(); }
public String reverse(String s){ char[] c = s.toCharArray(); int l=0, r=c.length-1; while (l<r) { char temp = c[l]; c[l] = c[r]; c[r] = temp; l++; r--; } return String.valueOf(c); } }
classSolution{ public String longestPalindrome(String s){ if (s==null || s.length()==0) return""; char[] str = s.toCharArray(); int start = 0, end = 0;//记录回文子串起始和终止的下标 int len = 0; for (int i=0; i<str.length; i++) { int len1 = getPalindromeLength(str, i, i);//奇数长度的回文子串 int len2 = getPalindromeLength(str, i, i+1);//偶数长度的回文子串 len = Math.max(Math.max(len1, len2), len); if (len > (end-start+1)) { start = i-(len-1)/2; end = i+len/2; } } return s.substring(start, end+1); } // 获取以str[i]、str[j]为中心的回文子串的长度 publicintgetPalindromeLength(char[] str, int i, int j){ while (i>=0 && j<str.length && str[i]==str[j]) { i--; j++; } return j-i-1; } }