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理解不到精华。