送分题
java版本:
class Solution {
public String reverseOnlyLetters(String s) {
// 每一个单个字符存到数组当中
// 然后对其进行倒序替换
int n=s.length();
char[] arr=s.toCharArray();
char[] arr1=new char[n];
int count=0;
// StringBuffer str=new StringBuffer(s);
for(int i=0;i<n;i++){
if(arr[i]-'a'<26 && arr[i]-'a'>=0){
arr1[i]=arr[i];
count++;
}else if(arr[i]-'A'<26 && arr[i]-'A'>=0){
arr1[i]=arr[i];
count++;
}else{
arr1[i]='*';
}
}
// for(int i=0;i<arr.length;i++){
// System.out.print(arr[i]);
// }
// System.out.println();
// for(int i=0;i<arr1.length;i++){
// System.out.print(arr1[i]);
// }
// System.out.println();
int j=0;
char[] arr2=new char[count];
for(int i=n-1;i>=0;i--){
if(arr1[i]!='*'){
arr2[j]=arr1[i];
j++;
}
}
j=0;
// for(int i=0;i<arr2.length;i++){
// System.out.print(arr2[i]);
// }
// System.out.println();
for(int i=0;i<arr.length;i++){
if(arr1[i]!='*'){
arr[i]=arr2[j];
j++;
}
}
return String.valueOf(arr);
}
}
Go版本:
func reverseOnlyLetters(s string) string {
// 每一个单个字符存到数组当中
// 然后对其进行倒序替换
arr:=make([]string,0);
arr_s:=make([]string,0);
arr1:=make([]string,0);
for _,value:=range s{
arr_s=append(arr_s, string(value));
}
// fmt.Println(arr_s)
for _,value:=range s{
if value-'a'<26 && value-'a'>=0{
arr=append(arr,string(value));
}else if value-'A'<26 && value-'A'>=0{
arr=append(arr,string(value));
}else{
arr=append(arr,"*");
}
}
for i:=len(arr)-1;i>=0;i--{
if arr[i]!="*"{
arr1=append(arr1,arr[i]);
}
}
// fmt.Println(arr1)
j:=0;
for i:=0;i<len(arr_s);i++{
if(arr[i]!="*"){
arr_s[i]=arr1[j];
j++;
}
}
res:=""
for i:=0;i<len(arr);i++{
res+=arr_s[i];
}
return res;
}
网友评论