2011-02-23 4 views
1

効率的なO(n)コードです。 私はOの溶液(N * N)2つの文字列を渡した場合にtrueを返す関数を作成します。最初の文字列のすべての文字が2番目の文字列内に一意に存在するようにします。

stringCompare(str1, str2){ 
int freq1[100] = {0}, i; 
int freq2[100] = {0}; 

for(i=0; i<=strlen(str1); i++){ 
    freq1[str1[i]]+ = 1; 
} 

for(i=0; i<=strlen(str2); i++) 

{ 
    freq2[str2[i]]+ = 1; 
} 

for(i=0;i<26;i++){ 
    if(freq1[i]!=freq2[i]) 
     return 0; 
    return 1; 

}

} 

答えて

1

それだけで一つの周波数カウント配列を使用していますので、私は少しMAKの擬似コードを変更しました。最終的なfreq配列の正の値は、s1のcharがs2にないことを意味します。負の値は、s2に余分な文字を示します。

function same(s1,s2): 
    freq=array of zeros 

    for i=0 to length of s1: 
     freq[s1[i]]+=1 

    for i=0 to length of s2: 
     freq[s2[i]]-=1 

    for i=0 to alphabet_size: 
     if not freq[i]=0 
      return "no" 
    return "yes" 
+0

私はコーダーではありませんが、この疑似コードのコードを書こうとしています:cpmpleting stringCompare(str1、str2){ int freq1 [100] = {0}、i、j、k; int freq2 [100] = {0}; (i = 0; i <= strlen(str1); i ++){ freq1 [str1 [i]] + = 1; (j = 0; j <= strlen(str2); j ++){freq1 [str1 [j]] + = 1; } – AKG

+0

ここでalphabet_sizeは何ですか? – AKG

0

(n)がOの溶液を考えることはできませんが、O(nlogn)が明らかであることを知っている:文字列を並べ替えます第二文字列中のすべての文字のための平等のための '文字、および比較結果

+0

コードを教えてもらえますか? – AKG

+0

@Akki:私はコードであなたを助けることができますが、コードを書くつもりはありません。あなたがすでにやっていることを教えてください。あなたが立ち往生してどこに助けてくれるのですか? –

+0

私はクイックソート(O(logn))を使って並べ替えています。 – AKG

0
  1. カウントの発生を(1つの文字列の検索)1弦チェックの各文字について
  2. かの第二回目でそのカウントリングは1(1文字列参照)となります。

可能な文字値の範囲のサイズのメモリバッファを1回ずつ検索する必要があります。

この方法では、1文字目の各文字が2回目に正確に表示されるかどうかを確認します。両方の文字列にそれぞれの文字が同じ回数表示されているかどうかを確認するために変更してください(それが問題の場合)。

1

最初の文字列の各文字の頻度と2番目の文字列の各文字の頻度をカウントします。両方の頻度カウントがすべての文字で同じ場合、一致があります。

私はコードを投稿しますが、これはあまりにも宿題に似ています。説明は十分なはずです。

EDIT:

擬似コード:

function same(s1,s2): 
    freq1=array of zeros 
    freq2=array of zeros 

    for i=0 to length of s1: 
     freq1[s1[i]]+=1 

    for i=0 to length of s2: 
     freq2[s2[i]]+=1 

    for i=0 to alphabet_size: 
     if not freq1[i]=freq2[i]: 
      return "no" 
    return "yes" 
+0

答えはありがとう、その宿題の質問ではなく、私はさまざまな方法で解決策を与えることができるものですが、私はあなたがそれを行うことができます。 – AKG

+0

@Akki:私は疑似コードを投稿しました。論理はそれから明らかでなければなりません。 – MAK

+0

@MAK:alphabet_sizeとは何ですか?また、ソリューションの複雑さを理解するのに役立ちます。 – AKG

関連する問題