文字列をパラメータとし、その文字列に対応する数値を返す関数を記述したいと思います。次のように2つの文字列がアナグラムであるかどうかを確認するために、hashfunction()のロジックはどうでしょうか?
Integer hashfunction(String a)
{
//logic
}
実際に質問イム解決は次のとおりです。文字列の配列を考えると
、アナグラムある文字列のすべてのグループを返します。元のリストのインデックスを表す整数のリストでグループを表します。
Input : cat dog god tca
Output : [[1, 4], [2, 3]]
はここに私の実装です: - あなたは同じ文字で構成されたすべての文字列に対して同じである番号を必要と
public class Solution {
Integer hashfunction(String a)
{
int i=0;int ans=0;
for(i=0;i<a.length();i++)
{
ans+=(int)(a.charAt(i));//Adding all ASCII values
}
return new Integer(ans);
}
**Obviously this approach is incorrect**
public ArrayList<ArrayList<Integer>> anagrams(final List<String> a) {
int i=0;
HashMap<String,Integer> hashtable=new HashMap<String,Integer>();
ArrayList<Integer> mylist=new ArrayList<Integer>();
ArrayList<ArrayList<Integer>> answer=new ArrayList<ArrayList<Integer>>();
if(a.size()==1)
{
mylist.add(new Integer(1));
answer.add(mylist);
return answer;
}
int j=1;
for(i=0;i<a.size()-1;i++)
{
hashtable.put(a.get(i),hashfunction(a.get(i)));
for(j=i+1;j<a.size();j++)
{
if(hashtable.containsValue(hashfunction(a.get(j))))
{
mylist.add(new Integer(i+1));
mylist.add(new Integer(j+1));
answer.add(mylist);
mylist.clear();
}
}
}
return answer;
}
}
ここでヒントは出力です[[1、4]、[2、3]]は整数ではありません –