1Day 1Practice

[codewars] Stop gninnips My sdroW!

Bittersweet- 2022. 6. 14. 11:14
728x90

Description.

Write a function that takes in a string of one or more words, and returns the same string, but with all five or more letter words reversed(Just like the name of this Kata). String passed in will consist of only letters and spaces. Spaces will be included only when more than one word is present.

 

하나 이상의 문자열을 받는 함수를 작성하고 받은 문자열을 반환해라. 단, 5자 이상의 문자열은 모두 반전하여 반환해라(제목처럼). 문자열은 문자와 공백으로만 구성되며, 공백은 하나 이상의 단어가 있는 경우에만 포함된다.

 

Example(with Result).

spinWords("Hey fellow warriors"); // returns Hey wollef srorirraw
spinWords("This is a test"); // returns This is a test
spinWords("This is another test"); // returns This is rehtona test"

 

 


 

 

Solution.

function spinWords(string) {
  const arr = string.split(" ");
  let result = [];
  
  for (let i of arr) {
    if(i.length >= 5) {
      result.push(i.split("").reverse().join(""));
    } else {
      result.push(i);
    }
  }
      
  return result.join(" ");
}

.split(" ") - 받은 문자열을 띄어쓰기로 구분하여 배열로 생성한 후, return 해줄 result 배열을 함께 생성.

빈 result 배열에 값을 담기 위해 for...in 구문 사용

arr.i의 길이가 5글자 이상일 경우 - 다시 arr.i를 배열로 변경 후 순서를 변경(reverse)하고 다시 합치고(join) result에 포함한다.

그 외 그냥 그대로의 값은 result에 포함한다.

result를 각 배열의 값과 여백을 포함하여 return 한다.

 

Other Solution.

// map
function spinWords(string) {
  return words.split(' ').map(function (word) {
    return (word.length > 4) ? word.split('').reverse().join('') : word;
  }).join(' ');
}

// regex
function spinWords(string){
  return string.replace(/\w{5,}/g, function(w) {return w.split('').reverse().join('') });
}

 

'1Day 1Practice' 카테고리의 다른 글

[codewars] First non-repeating character  (0) 2022.06.23
[codewars] Valid Parentheses  (0) 2022.06.15
[codewars] Isograms  (0) 2022.06.10
[codewar] Replace With Alphabet Position  (0) 2022.06.09
[codewars] Persistent Bugger  (0) 2022.05.19