Java实现第四题:如下字符串: * tring str = "xyzxy"; * 请输出每种字符出现的次数。1可以不写 * 如最终输出结果:2x2yz
时间: 2024-05-01 09:18:20 浏览: 197
好的,让我来回答您的问题。
可以使用HashMap来实现:
```
String str = "xyzxy";
Map<Character, Integer> map = new HashMap<>();
for (char c : str.toCharArray()) {
if (map.containsKey(c)) {
map.put(c, map.get(c) + 1);
} else {
map.put(c, 1);
}
}
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
System.out.println(entry.getValue() + "" + entry.getKey());
}
```
输出结果为:
```
2x
2y
1z
```
相关问题
已知字符串a,b。 在a字符串中删除部分字符串,添加最少字符使得a == b。import java.util.ArrayList; import java.util.Scanner; class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); tring str_0 = scan.nextLine(); String a = str_0; String str_1 = scan.nextLine().trim(); String b = str_1; scan.close(); int result = solution(a, b); System.out.println(result); } public static int solution(String a, String b){ int result = 0; // TODO: 请在此编写代码 return result; } }
好的,那么我们就在这段代码的solution方法中实现字符串编辑距离的算法。代码如下:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str_0 = scan.nextLine();
String a = str_0;
String str_1 = scan.nextLine().trim();
String b = str_1;
scan.close();
int result = solution(a, b);
System.out.println(result);
}
public static int solution(String a, String b){
int m = a.length();
int n = b.length();
int[][] dp = new int[m+1][n+1];
for(int i=0; i<=m; i++) {
dp[i][0] = i;
}
for(int j=0; j<=n; j++) {
dp[0][j] = j;
}
for(int i=1; i<=m; i++) {
for(int j=1; j<=n; j++) {
if(a.charAt(i-1) == b.charAt(j-1)) {
dp[i][j] = dp[i-1][j-1];
} else {
dp[i][j] = Math.min(dp[i-1][j-1]+1, Math.min(dp[i-1][j]+1, dp[i][j-1]+1));
}
}
}
return dp[m][n];
}
}
```
我们先读取输入的两个字符串a和b,并分别计算它们的长度m和n。然后,定义一个二维数组dp,其中dp[i][j]表示将a的前i个字符变成b的前j个字符所需的最少操作数。
接下来,我们进行dp数组的初始化。当i或j为0时,对应的dp[i][j]就等于另一个字符串的长度,因为此时我们只需要添加或删除对应数量的字符即可。
最后,我们通过状态转移方程来计算dp[i][j]的值。具体来说,如果a[i-1]等于b[j-1],那么dp[i][j]就等于dp[i-1][j-1],因为此时不需要进行任何操作。如果a[i-1]不等于b[j-1],那么我们可以进行三种操作中的一种,取其中最小的值即可。
最终,我们返回dp[m][n],即将a变成b所需的最少操作数。
输入一个字符串 str,再输入要删除字符 c(非空格字符),大小写不区分,将字符串 str 中出现的所有字符 c 删除。提示:去掉两端的空格。 用java实现
可以使用Java的字符串操作函数 `replaceAll()` 来实现删除指定字符。具体代码如下:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String str = input.nextLine().trim(); // 输入字符串并去掉两端空格
String c = input.nextLine().trim().toLowerCase(); // 输入要删除的字符并转换为小写
str = str.replaceAll("(?i)" + c, ""); // 使用正则表达式替换所有出现的字符 c,"(?i)"表示不区分大小写
System.out.println(str);
}
}
```
例如输入:
```
This is a test string.
S
```
输出结果为:
```
Thi i a tet tring.
```
阅读全文