privatefinalstatic HashSet<Character> vowels =newHashSet<>(Arrays.asList('a','e','i','o','u','A','E','I','O','U'));public String reverseVowels(String s){int i =0, j = s.length()-1;char[] result =newchar[s.length()];while(i <= j){char ci = s.charAt(i);char cj = s.charAt(j);if(!vowels.contains(ci)){result[i++]= ci;}elseif(!vowels.contains(cj)){result[j--]= cj;}else{result[i++]= cj;result[j--]= ci;}}returnnewString(result);}
go
funcreverseVowels(s string)string{b :=[]byte(s)for i, j :=0,len(b)-1; i < j;{ifisVowels(b[i])&&isVowels(b[j]){b[i], b[j]= b[j], b[i]i++j--}elseif!isVowels(b[i])&&isVowels(b[j]){i++}elseifisVowels(b[i])&&!isVowels(b[j]){j--}else{i++j--}}returnstring(b)}funcisVowels(s byte)bool{if s =='a'|| s =='e'|| s =='i'|| s =='o'|| s =='u'|| s =='A'|| s =='E'|| s =='I'|| s =='O'|| s =='U'{returntrue}returnfalse}
4. 回文字符串
題目描述:刪除一個(gè)字符,判斷是否能構(gòu)成回文字符串。
java
publicbooleanvolidPalindrome(String s){for(int i =0, j = s.length()-1; i < j; i++, j--){if(s.charAt(i)!= s.charAt(j)){returnisPalindrome(s, i +1, j)||isPalindrome(s, i, j -1);}}returntrue;}privatebooleanisPalindrome(String s,int i,int j){while(i < j){if(s.charAt(i++)!= s.charAt(j--)){returnfalse;}}returntrue;}
go
funcvalidPalindrome(s string)bool{b :=[]byte(s)for i, j :=0,len(b)-1; i <= j;{if b[i]== b[j]{i++j--}elseif b[i]!= b[j]{returnisPal(b, i+1, j)||isPal(b, i, j-1)}}returntrue}funcisPal(b []byte, i int, j int)bool{for i<=j{if b[i]==b[j]{i++j--}else{returnfalse}}returntrue}