2017-07-26 54 views
0

这是一个面试问题。 您被告知从用户&输入字符串输入,输出一个由空格分隔的字符串(或字符串数​​组),其中有意义的单词与另一个字符串(称为Dictionary)匹配。你有一个字典功能来检查单词是否存在。
例如:
如果Input is "howareyou" Output should be "how are you"
其中单词'how','are','you'存在于词典字符串中。如何将Java中的一个字符串的单词与另一个字符串的单词进行比较,并将匹配的单词分开?

再举一个例子:
Input: "somethingneedstobedone Output: "something needs to be done (假设词典有像的东西的话,需要到,来,做

我没有得到什么时候做ķ++如果没有匹配。 。

我尝试代码:

public class Sample1 { 
public static void main(String[] args) { 
    Scanner sc=new Scanner(System.in); 
    int i,j,k,len; 
    String[] dict= {"how","are","you","something","needs","to","be","done"}; 
    //StringBuilder str=new StringBuilder("howareyou"); 
    StringBuilder str=new StringBuilder("somethingneedstobedone"); 
    len=str.length(); 
    for(i=0,j=0,k=0;i<len;i++) 
    { 
     for(j=i+1;j<len;j++) 
     { 
      if(dict[k].toString().equals(str.substring(i, j))) 
      { 
       str.insert(j, " "); 
       k++; 
      } 
     } 
    } 
    System.out.println(str); 
    sc.close(); 
} 

的注出的C Ase运作良好,但帮助我得到第二个案件的工作。

+1

请包括你已经尝试的代码。 –

+0

另外,目前还不清楚字典是如何表示的。 – RealSkeptic

+0

'something'可以解析为'something'和'something'。 – Antoniossss

回答

1

你遇到的问题(以及第一个字符串成功和第二个字符串成功的原因)与字典中的单词顺序有关。 您当前的实现检查字典中的单词是否完全按字词顺序出现在字典中 - 之后,找到第一个单词后,放入空格并继续查找第二个单词。如果您没有找到下一个单词,则不会继续进行此过程。

有很多方法重写代码即可获得你想要的东西,但最小变化是:

public class Sample1 { 
public static void main(String[] args) { 
    Scanner sc=new Scanner(System.in); 
int i,j,k,len; 
    String[] dict= {"how","are","you","something","needs","to","be","done"}; 
    //StringBuilder str=new StringBuilder("howareyou"); 
    StringBuilder str=new StringBuilder("somethingneedstobedone"); 
    len=str.length(); 
    for(i=0,j=0;i<len;i++) //removed k from here 
    { 
     for(j=i+1;j<len;j++) 
     { 
      for (k=0;k<dict.length;k++) { //added this loop! 
      if(dict[k].toString().equals(str.substring(i, j))) 
      { 
       str.insert(j, " "); 
      } 
      } //Loop closing for k - the dictionary 
     } 
    } 
    System.out.println(str); 
    sc.close(); 
} 
+0

非常感谢..它的工作! – Srk95

相关问题