【微信公眾號:yi極】
反轉(zhuǎn)字符串 II
題目描述:
給定一個字符串 s 和一個整數(shù) k,從字符串開頭算起,每 2k 個字符反轉(zhuǎn)前 k 個字符。
如果剩余字符少于 k 個,則將剩余字符全部反轉(zhuǎn)。
如果剩余字符小于 2k 但大于或等于 k 個,則反轉(zhuǎn)前 k 個字符,其余字符保持原樣。
方法:
思路:
time 表示字符串反轉(zhuǎn)幾輪,將字符串轉(zhuǎn)化成字符數(shù)組進行操作,反轉(zhuǎn)第一輪時如果字符少于 k 個,則將字符全部反轉(zhuǎn),否則反轉(zhuǎn)前 k 個字符,其余字符保持原樣。
第一輪反轉(zhuǎn)過后,time 加一,重復之前操作。
public class Solution {
/*
* 執(zhí)行用時: 0 ms
* 內(nèi)存消耗: 38.5 MB
* */
public static String reverseStr(String s, int k) {
int len = s.length();
int times = 1;
char [] ch = s.toCharArray();
for(int i = 0; i < len; ){
int j = Math.min(len, times*2*k);
int dis = j - i;
if (dis < k){
reverse(ch, i, j-1);
} else {
reverse(ch, i, i+k-1);
}
times++;
i = j;
}
return String.valueOf(ch);
}
private static void reverse(char[] ch, int start, int end) {
int i = start;
int j = end;
while(i < j){
char temp = ch[i];
ch[i] = ch[j];
ch[j] = temp;
i++;
j--;
}
}
}
注意:Java中valueof()的使用
valueof()方法可將基本數(shù)據(jù)類型轉(zhuǎn)換成 String類型,有下列幾種:
String.valueOf(boolean b) //將 boolean 變量 b 轉(zhuǎn)換成字符串
String.valueOf(char c) //將 char 變量 c 轉(zhuǎn)換成字符串
String.valueOf(char[] data) //將 char 數(shù)組 data 轉(zhuǎn)換成字符串
String.valueOf(double d) //將 double 變量 d 轉(zhuǎn)換成字符串
String.valueOf(float f) //將 float 變量 f 轉(zhuǎn)換成字符串
String.valueOf(int i) //將 int 變量 i 轉(zhuǎn)換成字符串
String.valueOf(long l) //將 long 變量 l 轉(zhuǎn)換成字符串
String.valueOf(Object obj) //將 obj 對象轉(zhuǎn)換成 字符串, 等于 obj.toString()
String.valueOf(char[] data, int offset, int count) //將字符數(shù)組data中從offset開始count長度的字符轉(zhuǎn)換成字符串。
測試代碼:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.printf("請輸入字符串s = ");
String str = sc.nextLine();
System.out.printf("請輸入整數(shù)k = ");
int num = sc.nextInt();
System.out.println(reverseStr(str, num));
}
運行結(jié)果:
屏幕截圖1.png

屏幕截圖2.png