Code Review共通接頭辞の検索

16769 ワード

strsは単語を含む配列です.
共通の開始語(prefix)を返してください.
例:
strs = ['start', 'stair', 'step']
「st」に戻る
strs = ['start', 'wework', 'today']
戻る
<最初の回答>
const getPrefix = strs => {

let blank='';  
if(strs.length == 0){
    return ''
  }

else{
let one = strs[0].split('');
let two = strs[1].split('');
let three = strs[2].split('');

for(let i=0; i<one.length; i++){
if(one[i]==two[i]&&one[i]==three[i]){
blank += one[i]
}}return blank;}}

getPrefix(['start', 'stair', 'step'])
:blankを「」として保持し、3つの単語の共通アルファベットのみを追加します.
ただし,配列の個数がnの場合,適用されない制限がある.
<第2の方法>
const getPrefix = strs => {

for(i=0; i<strs.length ;i++)
{ for(j=0; j<strs[i].length; j++){
if (strs[i].split('')[j]!==strs[i+1].split('')[j])
{strs[i+1]= strs[i+1].split('').subString(0,j);}else {strs[i+1]=''} 
}
}
return strs[i+1].join('')[0];}
getPrefix(['start', 'wework', 'today'])
strsの要素.length-1,str[i]とstr[i+1]を比較し,str[i+1]は共通のアルファベットのみを残し,切り取った後,次の要素と比較し,同じ作業を書こうとしたが,標準が固定されていなかったため,ㅠㅠを混同した.頭が複雑になって、次の日にまた挑戦!
------ <1day later> ---------
<第3の方法>
const getPrefix = strs => {
for(i=0; i<strs.length ;i++)
{ for(j=0; j<strs[0].length; j++){
if (strs[0].split('')[j]!==strs[i].split('')[j])
{console.log(strs[0]);
strs[0]= strs[0].substring(0,j);}
}
}
return strs[0]}

getPrefix(['abc','abcd','abdes','a'])
strs[0]を固定値にし、ifゲートを回して値を変更し続け、成功に戻ります.
<第4の方法>
const getPrefix = strs => {
for(let i=1; i<strs.length ;i++)
{while(strs[i].indexOf(strs[0])==-1)
{console.log(strs[0]);
strs[0]= strs[0].substring(0,strs[0].length-1);}}
return strs[0]}

getPrefix(['start', 'stair', 'step'])
論理は似ていますが、indexOfを使用するとアルファベット単位で比較する手間が減ります.
それからwhile文を使って、結果はアルファベット単位で比較できます...!
より身近に感じるようになりました:)