?344.反轉字符串
344. 反轉字符串 - 力扣(LeetCode)
class Solution {public void reverseString(char[] s) {for(int i = 0,j = s.length-1;i< s.length/2 ; i++,j--){swap(s,i,j);}}public void swap(char[] s,int i,int j ){char temp = s[i];s[i] = s[j];s[j] = temp;}
}
public void reverseString(char[] s) {for(int i = 0,j = s.length-1;i< j ; i++,j--){swap(s,i,j);}}public void swap(char[] s,int i,int j ){char temp = s[i];s[i] = s[j];s[j] = temp;}
541.?反轉字符串II
541. 反轉字符串 II - 力扣(LeetCode)
class Solution {public String reverseStr(String s, int k) {char [] ch = s.toCharArray();//1 2k一次進行反轉for(int i =0;i<ch.length;i+=2*k ){//能湊夠k個if(i+k<=ch.length){reverseStr(ch,i,i+k-1);continue;}//湊不夠k個reverseStr(ch,i,s.length()-1);}return new String(ch);}public void reverseStr(char [] ch,int i,int j){for(;i<j;i++,j--){char temp = ch[i];ch[i] = ch[j];ch[j] = temp;}}
}
卡碼54替換數字
題目頁面 (kamacoder.com)
import java.util.Scanner;class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);String s = in.nextLine();StringBuilder sb = new StringBuilder();for (int i = 0; i < s.length(); i++) {if (Character.isDigit(s.charAt(i))) {sb.append("number");}else sb.append(s.charAt(i));}System.out.println(sb);}
}
151.翻轉字符串里的單詞?
151. 反轉字符串中的單詞 - 力扣(LeetCode)
我認為我這里去重' '做的還是比較舒服的,
slow!=0,也就是第一個位置不留空格
前面的幾個就是單詞后面留空格的邏輯了,fast<len-1是防止最后一個元素空指針異常。
class Solution {public String reverseWords(String s) {char[] ch = s.toCharArray();// --hello-word--reverseS(ch,0,ch.length-1);//--drow--olleh--int slow = 0;for (int fast =0; fast < ch.length;fast++) {if(ch[fast]==' '&&fast<ch.length-1&&ch[fast+1]!=' '&&slow!=0){ch[slow++] = ch[fast];}if(ch[fast]!=' '){ch[slow++]=ch[fast];}}//drow-olleh------char [] newCh = new char[slow];System.arraycopy(ch,0,newCh,0,slow);//drow-ollehint start = 0;int end = 1;int n = newCh.length;while(start<n){while (end<n&&ch[end]!=' ') end++;reverseS(newCh,start,end-1);start = end+1;end = start+1;}return new String(newCh);}public void reverseS(char [] ch,int i,int j){for(;i<j;i++,j--){char temp = ch[i];ch[i] = ch[j];ch[j] = temp;}}
}
卡碼網:55.右旋轉字符串
題目頁面 (kamacoder.com)
public class Sloution54 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();String str = sc.next();//abcdefg len = 7StringBuilder sb = new StringBuilder();for (int i = str.length()-n; i < str.length(); i++) {char c = str.charAt(i);sb.append(c);}for (int i = 0; i < str.length() - n; i++) {char c = str.charAt(i);sb.append(c);}System.out.println(sb);}
}
補充
卡瑪網里的這兩道題日后用C++做一遍,java理解不到精華。