Java 如何在不使用数组的情况下比较这两个字符串并删除公共字母?
这是我为解决这个问题而设计的代码,但它似乎根本不起作用。我使用嵌套for循环来比较第一个字符串和第二个字符串的字母,因为它们可能有不同的长度Java 如何在不使用数组的情况下比较这两个字符串并删除公共字母?,java,string,Java,String,这是我为解决这个问题而设计的代码,但它似乎根本不起作用。我使用嵌套for循环来比较第一个字符串和第二个字符串的字母,因为它们可能有不同的长度 import java.util.*; public class Trim { public static String myTrim(String input, String list) { String r = ""; for (int i = 1; i < input.length();i++)
import java.util.*;
public class Trim
{
public static String myTrim(String input, String list)
{
String r = "";
for (int i = 1; i < input.length();i++)
{
for (int k = 1; k < list.length();k++)
{
if (input.charAt(i) != list.charAt(i))
{
r += input.charAt(i);
}
}
}
return r;
}
}
import java.util.*;
公共级修剪
{
公共静态字符串myTrim(字符串输入,字符串列表)
{
字符串r=“”;
对于(int i=1;i
尝试使用标志来确定是否重复字符:
String r = "";
for (int i = input.length() - 1; 0 <= i; i --) {
if (-1 == list.indexOf(input.charAt(i))) {
r += input.charAt(i);
}
}
String r=”“;
对于(int i=input.length()-1;0
我们必须从列表中出现的输入中过滤掉字符
现在我们必须检查输入的每个字符是否出现在列表中
如果列表字符串中存在输入字符,则k值将小于list.length()
循环之后,我们检查k值并将其附加到新字符串中
公共静态字符串myTrim(字符串输入,字符串列表)
{
字符串r=“”;
对于(int i=0;i
我想您应该使用String.indexOf
方法。
因此:
公共静态字符串myTrim(字符串输入,字符串列表)
{
StringBuilder结果=新建StringBuilder();
字符c;
对于(int i=0;i
我已经尝试过这段代码,它可以很好地处理您的两个输入
for (int i = 0; i < S1.length(); i++) {
for(int j=0;j< S2.length();j++) {
if(S1.charAt(i)==S2.charAt(j)) {
char Temp= S2.charAt(j);
String Temp2=String.valueOf(Temp);
S1=S1.replace(Temp2, "");
}
}
}
for(int i=0;i
这是密码
import java.util.Scanner;
public class StringRemoveChar {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String S1, S2;
S1 = scanner.nextLine();
S2 = scanner.nextLine();
for (int i = 0; i < S1.length(); i++) {
for (int j = 0; j < S2.length(); j++) {
if (S1.charAt(i) == S2.charAt(j)) {
char Temp = S2.charAt(j);
String Temp2 = String.valueOf(Temp);
S1 = S1.replace(Temp2, "");
System.out.println(S1.length());
}
}
}
System.out.println(S1);
}
}
import java.util.Scanner;
公共类StringRemoveChar{
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
字符串S1、S2;
S1=scanner.nextLine();
S2=scanner.nextLine();
对于(int i=0;i
输入:
宫崎骏
你
输出:
宫崎骏
一个很好的一行解决方案是使用:
我们可以使用replaceAll并使用一个循环,这将使解决方案变得简单
public static String myTrim(String input, String list)
{
for(int i=0;i<list.length();i++)
{
input=input.replaceAll(list.charAt(i)+"","");
}
return input;
}
公共静态字符串myTrim(字符串输入,字符串列表)
{
对于(int i=0;i为什么不使用k?给定的问题描述似乎询问列表中出现在输入中任何位置的任何字符,而不仅仅是在同一位置。您到底在问什么?要更简单的方法?要更快的方法?如果您的代码没有给出预期的输出?但是发布的代码段有一些基本错误。Java generally将0
作为第一个索引,并且您没有使用k
变量。“它似乎根本不起作用”->您得到了什么错误/输出?您不能使用数组!:)如果s1和s2的长度不相同,这会给我带来超出范围的错误请提供测试用例,因为我在问题中给出的两个示例上都执行了此代码,这两个示例都不相同,并且运行良好。我希望您在注释之前尝试过执行。对不起,它最终会运行。我在尝试接收fir时遇到问题st字符串作为键盘的输入。我只是想我只需要直接在方法中键入字符串。谢谢老板!通过添加..我的意思是你应该在答案中添加,以便更可读和更有用。我做了同样的事情,但当你尝试使用类似{迈阿密大学}的短语时,它只返回{Univers}我能够得到正确的输出,这是不确定的Mam,你能运行完整的代码,并检查我已经更新了我的答案谢谢!我已经整理好了
for (int i = 0; i < S1.length(); i++) {
for(int j=0;j< S2.length();j++) {
if(S1.charAt(i)==S2.charAt(j)) {
char Temp= S2.charAt(j);
String Temp2=String.valueOf(Temp);
S1=S1.replace(Temp2, "");
}
}
}
import java.util.Scanner;
public class StringRemoveChar {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String S1, S2;
S1 = scanner.nextLine();
S2 = scanner.nextLine();
for (int i = 0; i < S1.length(); i++) {
for (int j = 0; j < S2.length(); j++) {
if (S1.charAt(i) == S2.charAt(j)) {
char Temp = S2.charAt(j);
String Temp2 = String.valueOf(Temp);
S1 = S1.replace(Temp2, "");
System.out.println(S1.length());
}
}
}
System.out.println(S1);
}
}
CharMatcher.anyOf(list).removeFrom(input);
public static String myTrim(String input, String list)
{
for(int i=0;i<list.length();i++)
{
input=input.replaceAll(list.charAt(i)+"","");
}
return input;
}
package stackoverflow.string;
public class StringManipulation
{
public static void main(String[] args)
{
System.out.println(myTrim("University of Miami","city"));
}
public static String myTrim(String input, String list)
{
for(int i=0;i<list.length();i++)
{
input=input.replaceAll(list.charAt(i)+"","");
}
return input;
}
}