344.反轉字串
編寫一個函式,其作用是將輸入的字串反轉過來。輸入字串以字元陣列 s
的形式給出。
不要給另外的陣列分配額外的空間,你必須原地修改輸入陣列、使用 O(1) 的額外空間解決這一問題。
示例 1:
輸入:s = ["h","e","l","l","o"]
輸出:["o","l","l","e","h"]
示例 2:
輸入:s = ["H","a","n","n","a","h"]
輸出:["h","a","n","n","a","H"]
簡單題不寫思路
程式碼如下:
public void reverseString(char[] s) {
int n = s.length;
for (int left = 0, right = n - 1; left < right; ++left, --right) {
char tmp = s[left];
s[left] = s[right];
s[right] = tmp;
}
}
541.反轉字串II
給定一個字串 s
和一個整數 k
,從字串開頭算起,每計數至 2k
個字元,就反轉這 2k
字元中的前 k
個字元。
- 如果剩餘字元少於
k
個,則將剩餘字元全部反轉。 - 如果剩餘字元小於
2k
但大於或等於k
個,則反轉前k
個字元,其餘字元保持原樣。
示例 1:
輸入:s = "abcdefg", k = 2
輸出:"bacdfeg"
示例 2:
輸入:s = "abcd", k = 2
輸出:"bacd"
程式碼如下:
public String reverseStr(String s, int k) {
int n = s.length();
char[] arr = s.toCharArray();
for (int i = 0; i < n; i += 2 * k) {
reverse(arr, i, Math.min(i + k, n) - 1);
}
return new String(arr);
}
public void reverse(char[] arr, int left, int right) {
while (left < right) {
char temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
}
54.替換數字
題目描述
給定一個字串 s,它包含小寫字母和數字字元,請編寫一個函式,將字串中的字母字元保持不變,而將每個數字字元替換為number。 例如,對於輸入字串 "a1b2c3",函式應該將其轉換為 "anumberbnumbercnumber"。
輸入描述
輸入一個字串 s,s 僅包含小寫字母和數字字元。
輸出描述
列印一個新的字串,其中每個數字字元都被替換為了number
輸入示例
a1b2c3
輸出示例
anumberbnumbercnumber
程式碼如下:
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))) {//Character.isDigit(char ch) 是一個靜態方法,用於檢查指定的字元是否是一個數字
sb.append("number");
}else sb.append(s.charAt(i));
}
System.out.println(sb);
}
}