지그재그 방향
3371 단어 careertutorialjavascript
예를 들어, 'PAYPALISHIRING'은 우리가 얻고자 하는 최종 결과입니다. 그러나 거기에 도달하려면 행 수로 분리하고 행을 결합해야 합니다.
P A H N
A P L S I I G
Y I R
var convert = function(s, numRows) {
if (s.length < 2 || s.length < numRows){
return s
}
이 첫 번째 부분을 보면 길이가 1자일 경우 또는 글자 수가 행 수보다 적으면 해당 글자를 반환하라는 것입니다. 이것은 우리의 기본 상태를 증명합니다.
var convert = function(s, numRows) {
if (s.length < 2 || s.length < numRows){
return s
}
const rows = new Array(numRows).fill('')
let count = 0
let reverse = false;
이제 우리는 성공을 위해 자신을 설정할 것입니다. 거기에 있는 금액 행에 대한 새 배열을 만들고 빈 문자열로 채울 것입니다. numRows = 3으로 여기에 기록된 경우 다음과 같이 표시됩니다.
var convert = function(s, numRows) {
if (s.length < 2 || s.length < numRows){
return s
}
const rows = new Array(numRows).fill('')
로그 행을 콘솔하면 아래와 같이 됩니다.
['']['']['']
다음으로, 우리는 나중에 문자열을 탐색하고 각 문자를 배열에 놓을 것이기 때문에 카운터 변수 0이 필요합니다. 그런 다음 개수가 0이거나 행 수와 같으면 방향을 변경합니다.
왼쪽에서 오른쪽으로 이동하기 때문에 0에 도달하기 전에 numRows에 도달합니다(첫 번째 배열의 첫 번째 문자는 0이 아니라 1에 있으므로 reverse가 true이면 감소하고 감소합니다). 거짓이면 계속 진행하십시오.
var convert = function(s, numRows) {
if (s.length < 2 || s.length < numRows){
return s
}
const rows = new Array(numRows).fill('')
let count = 0
let reverse = false;
for (let i = 0; i < s.length; i++) {
rows[count] += s[i]
reverse ? count-- : count++
if (count === 0 || count === numRows - 1) {
reverse = !reverse
}
}
여기에서 콘솔 로그를 보면 다음과 같은 일이 발생하는 것을 볼 수 있습니다. 첫 번째 배열에서 현재 문자를 가져오고 세 번째 문자를 칠 때까지 계속 진행합니다. 그런 다음 A, 문자열 2가 다음 문자를 얻도록 방향을 반대로 변경하고 1을 칠 때까지 내려갑니다.
[ 'P', '', '' ]
-
1
[ 'P', 'A', '' ]
-
2
[ 'P', 'A', 'Y' ]
-
3
[ 'P', 'AP', 'Y' ]
-
2
[ 'PA', 'AP', 'Y' ]
-
1
[ 'PA', 'APL', 'Y' ]
-
2
[ 'PA', 'APL', 'YI' ]
-
3
[ 'PA', 'APLS', 'YI' ]
-
2
[ 'PAH', 'APLS', 'YI' ]
-
1
계속해서 계속 진행하지만 한쪽 끝을 치면 지그재그로 움직이는 것을 볼 수 있습니다. 우리가 다른 방향으로 치면 지그합니다. 남은 것은 모든 행을 결합하여 반환하는 것뿐입니다.
var convert = function(s, numRows) {
if (s.length < 2 || s.length < numRows){
return s
}
const rows = new Array(numRows).fill('')
let count = 0
let reverse = false;
for (let i = 0; i < s.length; i++) {
let current = s[i]
rows[count] += current
console.log(rows)
reverse ? count-- : count++
if (count === 0 || count === numRows - 1) {
reverse = !reverse
}
}
let joined = rows.join('')
console.log(joined)
};
Reference
이 문제에 관하여(지그재그 방향), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/seth_king/zigzag-direction-bim텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)