Code Kata


この問題は条件を一つも解けずに終わった問題だ.

1.質問

strs은 단어가 담긴 배열입니다. 공통된 시작 단어(prefix)를 반환해주세요.

예를 들어 strs = ['start', 'stair', 'step'] return은 'st'

strs = ['start', 'wework', 'today'] return은 ''

2.最終コード

const getPrefix = strs => {
 
  let strings = strs[0];

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

  for(let i=0; i<strs.length; i++){
    for(let j=0; j<strings.length; j++){
      
      if(strs[i][j] !== strings[j]) {
        strings = strs[i].slice(0,j);
        }
      }
    }
  return strings;
  }

getPrefix(['start', 'stair', 'step']);

3.解法


手順1。コード設計と起動


配列の最初のデータを次の配列のデータと比較します.
データが一致しない場合は、データを一致する場所に抽出します.
このように作戦計画を立てて、コードを騒がせます.
const getPrefix = strs => {
 
    // const strings = strs[0];
  let strings = strs[0];

if(strs.length === 0){
  return '';
}
}
最初からエラーが発生しました.配列の最初のデータを指定すると、
constの使用後にエラーが発生しました.
それからletに変えて再使用し、エラーは消えました.
配列内のデータは常に変更可能なデータです.
constで固定するとエラーが発生します.
アレイにデータがない場合もあると思います.
ifでデータがない場合を作成しました.

手順2。データが一致しない場合

const getPrefix = strs => {
 
    // const strings = strs[0];
  let strings = strs[0];

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

for(let i = 0; i < strs.length; i++) {
  for(let j = 0; j < strings.length; j++) {
  if(strs[i][j] !== strings) {
  
       }
     }
   }
}
配列内のデータを1つずつ比較するには、重複文を使用します.
有効と考える.だから2階建てのドアを使っています.
二重for文を使用するには理由があります.
こう並べて👉 [][アレイ内のデータへのアクセスを許可する]
なぜなら.
(今わかりました.偶然知りましたが、やっぱり、
今回最初の発見者も私ではありませんでした.
strs[i][j]は、配列内の各文字にアクセスできます.
stringは、配列内の最初のデータを指すように設定されます.
配列の最初の単語と次の単語が異なる場合は、
条件を満たした.
const getPrefix = strs => {
 
    // const strings = strs[0];
  let strings = strs[0];

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

for(let i = 0; i < strs.length; i++) {
  for(let j = 0; j < strings.length; j++) {
  
  if(strs[i][j] !== strings) {
     strings = strs[i].slice(0,j);
       }
     }
   }
  return strings
}
条件が正しい場合は、sliceでカットした単語で最初の単語を作成します.
配列の最初の単語stringsを返します.

手順3。コードの変更


条件が一致しないため、コードは通過しませんでした.
見回して、どんな面で間違いを犯したのか知りたい.
条件をあげるときは、それぞれの言葉を比較しなければなりません.
私が書いたコードは単語です!=字である以上.
コードはもちろん通らなかった.
stringの各文字を見るためにfor文jを用いた.
(string自体は単語を指しています.
単語を巡るfor文のjを使ってください
テキスト文字の条件を作った.
const getPrefix = strs => {
 
    // const strings = strs[0];
  let strings = strs[0];

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

for(let i = 0; i < strs.length; i++) {
  for(let j = 0; j < strings.length; j++) {
  
  if(strs[i][j] !== strings[j]) {
     strings = strs[i].slice(0,j);
       }
     }
   }
  return strings
}
そしてコードを通過するように要求した結果、解決しました.