728x90
역순으로 돌려도 같은 문자열이 나오는 경우의 수 중에서 가장 길이가 긴 문자열을 반환 하는 문제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
//똑같은 알파벳으로 시작하고 끝나는 경우, 그 단어가 가장 긴 문자열을 반환하는 것.
//이 때 공백도 하나의 문자로 취급해서 길이에 카운트 해줘야 한다.
//내가 헷갈렷던 건 단어들을 쪼갤 수 있는건지? 아니면 그냥 같은 알파벳으로 끝나고 시작만 하면 되는건지가 헷갈렸다.
//새로 작성한 코드는 후자의 경우로 다시 풀어 본것
//그리고 가장 중요한데 고려를 하지 못한 것이 같은 문자로 시작하고 끝나는 것과 더불어서
//그 단어를 뒤집어도 기존 단어와 똑같아야 한다는 것
var longestPalindrome = function (string) {
//문자열을 소문자로 다 바꿔주기
string = string.toLowerCase();
let res = '';
for (let i = 0; i < string.length; i++) {
for (let j = i + 1; j < string.length; j++) {
if (string[i] === string[j]) {
let temp = string.slice(i, j + 1);
if (temp === temp.split('').reverse().join('')) {
if (temp.length > res.length) {
res = temp;
}
}
}
}
}
return res;
};
//아래가 첫번째 코드
//너무 꼬아서 생각했나 싶어서 다시 코드 작성 시도
// var longestPalindrome = function (string) {
// //debugger;
// //문자열을 소문자로 다 바꿔주기
// string = string.toLowerCase();
// //문자열 내의 공백을 하나의 문자처럼 취급해주기 위해서 공백들을 모두 "."으로 변환해주기
// //let newStr = string.replace(/ /g, '.'); // newStr = my.dad.is.a.racecar.athlete
// //그리고 문자열을 공백 기준으로 나눠주기
// let newStrArr = newStr.split(' '); // newStrArr = [my,dad,is,a,racecar,athlete]
// let largestLen = 0;
// //우선 주어진 문자열 배열을 반복문을 돌면서, 그 문자열 내의 같은 문자를 찾고, 같다면 길이를 재기
// for (let i = 0; i < newStrArr.length; i++) {
// // i = 4 , tempWord = newStrArr[4] = racecar
// let tempWord = newStrArr[i];
// for (let j = 0; j < tempWord.lenth - 1; j++) {
// //j=0 , tempWord[0] = r / temp = acecar /
// //단어 내에서 같은 문자열이 존재하는 경우에만 연산
// let temp = tempWord.splice(j, 1);
// if (temp.indexOf(tempWord[j]) !== -1) {
// let firstIdx = j;
// let afterIdx = temp.indexOf(tempWord[j]) + 1;
// let tempLen = afterIdx - firstIdx + 1
// //만약에 해당 길이가 단어 자체의 길이라면 앞뒤 공백값까지 길이에 포함할 수 있다.
// if(firstIdx === 0 && afterIdx === tempWord.lenth - 1){
// tempLen +=2
// }
// if (afterIdx - firstIdx + 1 > largestLen) {
// largestLen = afterIdx - firstIdx + 1;
// }
// break;
// }
// }
// }
// };
// longestPalindrome('My dad is a racecar athlete');
|
cs |
728x90
'CS STUDY > Algorithm&Data structure' 카테고리의 다른 글
[JS] 알고리즘 문제풀이 11 (0) | 2020.12.09 |
---|---|
Heap(힙) 자료구조에 대해서 (0) | 2020.12.09 |
[JS]알고리즘 문제풀이 9_재귀활용 (0) | 2020.11.11 |
[JS]알고리즘 문제풀이 8_linked list활용 (0) | 2020.11.10 |
[JS]알고리즘 문제풀이 7_이벤트메소드 생성 (0) | 2020.11.10 |