当前位置: 首页 > 知识库问答 >
问题:

在两个字符串之间计数并输出相似字符

李经国
2023-03-14

我想比较两个用户定义的字符串,并输出两个字符串之间共享的字符数,而不用使用数组。然后我需要输出这些字符中的每一个。我用扫描仪理解用户输入的部分,但后来我就不知所措了。

例如,string1中的"hamper"和string2中的"was"将返回:

共享字符数=5

共享字符

以下是我到目前为止的情况。不过,它会在单独的一行上打印每个字符。有没有一种不用数组的方法可以像上面那样将它们全部列在一行中

    public class CountMatches {

  public static void main(String[] args)
  {
    //Declare both Strings.
    String word1;
    String word2;
    int count = 0;


    //Call for User Input.
    Scanner inputDevice = new Scanner(System.in);
    System.out.print("Input String 1 >> ");
    word1 = inputDevice.next();
    System.out.print("Input String 2 >> ");
    word2 = inputDevice.next();
    inputDevice.close();

    //Determine lengths and set label accordingly.
    String BigWord;
    String SmallWord;

    if (word1.length() > word2.length())
    {
        BigWord = word1;
        SmallWord = word2;
    }
    else
    {
        BigWord = word2;
        SmallWord = word1;
    }

    //Count and Display the like characters.
    for (int i = 0; i < SmallWord.length(); i++)
    {
        if (BigWord.contains(String.valueOf(SmallWord.charAt(i))))
        {
            System.out.println("both words contain the letter " + SmallWord.charAt(i));
            count++;
        }
    }

    //Display the count of like characters.     
    System.out.print("Number of like characters >> " + count);
  }

    }

共有2个答案

赵昊阳
2023-03-14

一个非常好的方法是按字母顺序对字符串进行排序

sortedWord1 = new String(Arrays.sort(word1.toCharArray()));
sortedWord2 = new String(Arrays.sort(word2.toCharArray()));

这样做的目的是将单词转换为字符数组,按字母顺序排序,然后再次将它们转换为字符串。

下一步就是从头开始迭代并打印出所有常用字符。这会更容易,因为它们已经分类了。

int index1 = 0; 
int index2 = 0;
while((index1 < sortedWord1.length()) && (index2 < sortedWord2.length()) {
  if(sortedWord1.charAt(index1) == sortedWord2.charAt(index2)) {
    System.out.print(sortedWord1.charAt(index1) + " ");
    index1++; index2++;
  }
  else if(sortedWord1.charAt(index1)> sortedWord2.charAt(index2)) {
    index2++;
  }
  else {
    index1++;
  }
}

我还没有检查语法错误,但应该不错。

史高阳
2023-03-14

假设你有word1word2

String biggerWord;
String smallerWord;
if (word1.length() > word2.length()) {
   biggerWord = word1;
   smallerWord = word2;
} else {
   biggerWord = word2;
   smallerWord = word1;
}        
for (int i = 0; i < smallerWord.length(); i++) {
  if (biggerWord.contains(String.valueOf(smallerWord.charAt(i)))) {
    counter++;
  }
}

这会找出哪个词更大。然后对于smallerWord的长度,一次迭代一个字符,查看biggerWord是否包含该字符。如果是,则增加计数器<代码>计数器应该在循环结束时具有公共字符数。

这是手写的,所以要注意语法和小的逻辑错误。或者我误解了你的任务。不过应该很接近。

 类似资料:
  • 问题内容: 如果我在mysql中有两个字符串: 有没有办法使用MYSQL获得这两个字符串之间的相似性百分比?例如,这里有3个单词是相似的,因此相似度应为: count(@a和@b之间的相似单词)/(count(@a)+ count(@b)-count(intersection)) 和结果是3 /(4 + 4-3)= 0.6 高度赞赏任何想法! 问题答案: 您可以使用此功能(从http://www.

  • 如何获得一个字符串与Python中的另一个字符串相似的概率? 我想得到一个十进制值,如0.9(意味着90%)等。最好使用标准Python和库。 e、 g。

  • 我的问题是这样问的:编写一个比较两个输入字符串的程序。输出每个字符串位置匹配的字符数。输出应根据字符数使用正确的动词(匹配与匹配)。 例如:如果输入是:粉碎崩溃 输出为:4个字符匹配 这就是我到目前为止所拥有的: 导入java.util.Scanner; 我知道这看起来并不多,但我已经尝试了很多其他方法,但我显然缺少一些可以让这更容易做到的东西。我想数一下柜台里类似的字母……但我不知道该怎么办。

  • 问题内容: 如何获得字符串与Python中的另一个字符串相似的概率? 我想要一个像0.9(表示90%)之类的十进制值。最好使用标准Python和库。 例如 问题答案: 有一个内置的。 使用它:

  • 问题内容: 假设我们有类似的东西: 我想将“ someText”替换为其他内容。考虑到我不知道someText可能是什么(任何字符串)并且我所知道的是它将被&firstString =和&endString =包围的事实,最佳方法是什么? 编辑:对不起,看起来这还不够清楚。我不知道“ someText”可能是什么,我仅有的信息是它将位于&firstString =和&endString =之间 我

  • 我在学校开始Java,我被要求做这个练习,但我卡住了。我有两个数字,我必须找到这两个数字之间的字符差异,为了使它在字符数量上相等,我必须添加许多零作为缺失的字符。所以例如,如果我有10和100,输出将是010和100。我想得到支持,了解如何在这两个数字的string.length,我可以检测到缺少的字符并添加0。