java中两个字符串的字符串长度是否出错?

java中两个字符串的字符串长度是否出错?,java,string,duplicate-removal,Java,String,Duplicate Removal,这里我有两个字符串name1和name2,如果字母是重复的,那么times必须删除的事件最少。例如:string name1=“raja”和name2=“rani”在这种情况下,“r”必须同时从这两个字段中删除,“a”在name1中出现了2次,在name2中出现了1次,因此只有“a”必须从name1和name2中删除1次。最后,我需要得到输出为:“jani”,长度为4。但这里的长度是3。这是我的代码 String name1 = "raja"; String name2 = "rani"; fo

这里我有两个字符串name1和name2,如果字母是重复的,那么times必须删除的事件最少。例如:
string name1=“raja”
name2=“rani”
在这种情况下,“r”必须同时从这两个字段中删除,“a”在name1中出现了2次,在name2中出现了1次,因此只有“a”必须从name1和name2中删除1次。最后,我需要得到输出为:“jani”,长度为4。但这里的长度是3。这是我的代码

String name1 = "raja";
String name2 = "rani";
for (int i = 0; i < name1.length(); i++) {
    for (int j = 0; j < name2.length(); j++) {
        if (name1.charAt(i) == name2.charAt(j)) {
            name1 = name1.replace(name1.charAt(i), '\0');
            name2 = name2.replace(name2.charAt(j), '\0');
        }
    }
}
String result = name1 + name2;
String result = result.replaceAll("\0", "");
int resultLength = result.length(); //need to get 4.
String name1=“raja”;
字符串名称2=“rani”;
对于(int i=0;i
感谢您的帮助。

请尝试以下代码:

String name1 = "raja";
String name2 = "rani";
for (int i = 0; i < name1.length(); i++) {
    for (int j = 0; j < name2.length(); j++) {
        if (name1.charAt(i) == name2.charAt(j)) {       
            name1 = name1.replaceFirst(String.valueOf(name1.charAt(i)), "#");
            name2 = name2.replaceFirst(String.valueOf(name2.charAt(j)), "#");
            break;

        }
    }
}
String result = name1 + name2;
result = result.replaceAll("#","");
int resultLength = result.length(); //need to get 4.
System.out.println(result);
System.out.println(resultLength);
String name1=“raja”;
字符串名称2=“rani”;
对于(int i=0;i
我认为代码是不言自明的,但是如果您不理解代码中的任何内容,您可以留下评论。

对于这样一个简单的任务,您的代码太多了

在伪代码中:

  • 对于name1中的每个字符
    • 从name2中删除该字符的1个匹配项
在java中,不比伪代码多:

for (int i = 0; i < name1.length(); i++)
    name2 = name2.replaceFirst(name1.substring(i, i + 1), "");
for(int i=0;i
如前所述,这就是角色操作所需的全部代码

编辑: 我刚刚意识到可以做得更巧妙:

for (String letter : name1.split("(?<=.)"))
    name2 = name2.replaceFirst(letter, "");

for(字符串字母:name1.split(“(?您在
raja
中的最后一个
a
)也被删除。遵循本教程,当您将0放入字符串时,您认为会发生什么情况?Sarthak Mittal,当我更改name1=“krishna“名称2与rani相同,那么它给出了错误的长度11应该给出3对不起,我误读了你的问题,稍等几分钟:)事实上是这样的,因为如果第二个字符串之后也出现了更多字符,那么会从第二个字符串中删除,我是否清楚,请尝试删除该中断,并尝试使用不同输出的代码:)