344.反转字符串
题目链接/文章讲解/视频讲解:programmercarl.com/0344.%E5%8F…
class Solution {
public void reverseString(char[] s) {
int left = 0, right = s.length - 1;
while(left < right)
{
char temp = s[left];
s[left] = s[right];
s[right] = temp;
right--;
left++;
}
}
}
541. 反转字符串II
题目链接/文章讲解/视频讲解:programmercarl.com/0541.%E5%8F…
class Solution {
public String reverseStr(String s, int k) {
char[] ch = s.toCharArray();
for(int i = 0; i < ch.length; i += 2 * k){
int start = i;
int end = Math.min(start + k - 1, ch.length - 1);
while(start < end){
char temp = ch[start];
ch[start] = ch[end];
ch[end] = temp;
start++;
end--;
}
}
return new String(ch);
}
}
卡码网:54.替换数字
题目链接/文章讲解:programmercarl.com/kama54.%E6%…
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
char[] ch = s.toCharArray();
int cnt = 0;
for(int i = 0; i < ch.length; i++){
if(ch[i]>= '0' && ch[i] <= '9'){
cnt++;
}
}
char[] res = new char[ch.length + cnt * 5];
int p = 0;
for(int i = 0; i < ch.length; i++){
if(ch[i] >= '0' && ch[i] <= '9'){
res[p++] = 'n';
res[p++] = 'u';
res[p++] = 'm';
res[p++] = 'b';
res[p++] = 'e';
res[p++] = 'r';
}else{
res[p++] = ch[i];
}
}
String ans = new String(res);
System.out.println(ans);
}
}
另外还可以使用Java的stringbuilder进行解决,直接在查找到数字的地方加入‘number’即可。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (ch >= '0' && ch <= '9') {
// 如果是数字字符,添加 "number" 到 StringBuilder
sb.append("number");
} else {
// 如果不是数字字符,直接添加该字符
sb.append(ch);
}
}
String ans = sb.toString();
System.out.println(ans);
}
}
151.翻转字符串里的单词
题目链接/文章讲解/视频讲解:programmercarl.com/0151.%E7%BF…
这道题有许多解法
class Solution {
public String reverseWords(String s) {
StringBuilder res = new StringBuilder();
int p = s.length() - 1;
while(p >= 0){
//跳过空格
while(p >= 0 && s.charAt(p) == ' ') p--;
//找单词开头
int end = p;
if(p < 0) break;
while(p >= 0 && s.charAt(p) != ' ') p--;
if(res.length() > 0) res.append(' ');
res.append(s.substring(p + 1, end + 1));
}
return res.toString();
}
}
卡码网:55.右旋转字符串
题目链接/文章讲解:
programmercarl.com/kama55.%E5%…
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int k = sc.nextInt();
sc.nextLine();
String s = sc.nextLine();
int n = s.length();
k = k% s.length();
char[] rotated = new char[n];
for (int i = 0; i < n; i++) {
rotated[(i + k) % n] = s.charAt(i);
}
String res = new String(rotated);
System.out.println(res);
sc.close();
}
}