Algorithm Basic_#4
問題13📓
文字列が要素の配列を入力すると、文字列を垂直に読み出すときの文字列を返さなければなりません.
-I/O入力:stringタイプを要素とする配列 出力:戻りstringタイプ -I/O例
1)
2)最初のインデックスはarrの長さ
3)2番目のインデックスは最長文字列の長さです(他の文字列に対応するインデックス値がない場合は、転送を続行します).
4)文字列インデックスを基準として配列のインデックスが重複しているため,文字列インデックス外部を文とし,配列インデックス内部を文とする.
国境を越える👌
- Reference codetemp配列の長さと文字列の長さの比較
同じ長さの場合、長い他の文字列のロールはtemp配列の後ろに入ります.
長さが異なる場合は、既存のtemp配列で、新しい文字列を同じインデックスロール間で集約します. に質問📓
数値を要素として入力し、各要素が以前の要素の和より大きいかどうかを返します.
-I/O入力:数字を要素とする配列( 出力:ブール型戻り( -I/O例
1)for文を繰り返し,sumにインデックス順に加算する.
2)プラス記号を繰り返した後、次の索引と和を比較します.
3)sumが次のインデックスより大きいか等しい場合はfalseを返します.
4)残りの場合はtrueを返します.
国境を越える👌
- Reference code
2つの数値(num 1,num 2)を受け入れ、num 1をnum 2の残りの部分で割った値を返します.
-I/O入力:numberタイプの整数(num 1>=0) 出力:numberタイプの整数(num 2>=0) -I/O例
1)for文を用いてnum 1をnum 2に分け続け,残りを求める.
2)num 1をnum 2より大きくなるまで繰り返す.
国境を越える👌
- Reference code
に質問📓
文字列を受け入れ、等軸図であるかどうかを返します.等値線図とは、アルファベットごとに1回しか使用しない単語や文を指す.
-I/O入力:stringタイプスペースのないアルファベット文字列 出力:booleanタイプ -I/O例
1)文字列を大文字または小文字に整理します.
2)for文を使用して、インデックスと次のインデックスの値を比較します.
3)外部forクエリの範囲は最後のインデックスの前に限られる.最後のインデックスは、前のすべてのインデックスと比較されているからです.
国境を越える👌
- Reference code
key値が含まれている場合はfalseを返す必要があります.
文字列が要素の配列を入力すると、文字列を垂直に読み出すときの文字列を返さなければなりません.
-I/O
let input = [
//
'hello',
'wolrd',
];
let output = readVertically(input);
console.log(output); // --> 'hweolllrod'
input = [
//
'hi',
'wolrd',
];
output = readVertically(input);
console.log(output); // --> 'hwiolrd'
-答えは?1)
arr[0][0] + arr[1][0]
arr[0][1] + arr[1][1]
arr[0][2] + arr[1][2]
・で接続する.2)最初のインデックスはarrの長さ
3)2番目のインデックスは最長文字列の長さです(他の文字列に対応するインデックス値がない場合は、転送を続行します).
4)文字列インデックスを基準として配列のインデックスが重複しているため,文字列インデックス外部を文とし,配列インデックス内部を文とする.
function readVertically(arr) {
let maxLeng = 0;
for (i = 0; i < arr.length; i++) {
if (arr[i].length > maxLeng) {
maxLeng = arr[i].length
}
}
let result = ''
for (let j = 0; j < maxLeng; j++) {
for (let n = 0; n < arr.length; n++) {
if (arr[n][j] === undefined) {
continue
}
result = result + arr[n][j]
}
}
return result
}
-結果国境を越える👌
- Reference code
function readVertically(arr) {
let temp = [];
for (let i = 0; i < arr.length; i++) {
let str = arr[i];
for (let j = 0; j < str.length; j++) {
if (temp.length === j) {
temp.push(str[j]);
} else {
temp[j] = temp[j] + str[j];
}
}
}
let result = '';
for (let i = 0; i < temp.length; i++) {
result = result + temp[i];
}
return result;
}
同じ長さの場合、長い他の文字列のロールはtemp配列の後ろに入ります.
長さが異なる場合は、既存のtemp配列で、新しい文字列を同じインデックスロール間で集約します.
数値を要素として入力し、各要素が以前の要素の和より大きいかどうかを返します.
-I/O
arr[i]
整数)arr[i]
以上でなければならないarr[0]
至arr[i-1]
の和let output = superIncreasing([1, 3, 6, 13, 54]);
console.log(output); // --> true
output = superIncreasing([1, 3, 5, 9]);
console.log(output); // --> false
-答えは?1)for文を繰り返し,sumにインデックス順に加算する.
2)プラス記号を繰り返した後、次の索引と和を比較します.
3)sumが次のインデックスより大きいか等しい場合はfalseを返します.
4)残りの場合はtrueを返します.
function superIncreasing(arr) {
let sum = arr[0];
let result;
for (let i = 1; i < arr.length; i++) {
result = true;
sum = sum + arr[i]
if (sum >= arr[i + 1]) {
result = false;
break;
}
}
return result
}
-結果国境を越える👌
- Reference code
function superIncreasing(arr) {
let sum = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] <= sum) {
return false;
}
sum = sum + arr[i];
}
return true;
}
に質問📓2つの数値(num 1,num 2)を受け入れ、num 1をnum 2の残りの部分で割った値を返します.
-I/O
let output = modulo(25, 4);
console.log(output); // --> 1
-答えは?1)for文を用いてnum 1をnum 2に分け続け,残りを求める.
2)num 1をnum 2より大きくなるまで繰り返す.
function modulo(num1, num2) {
if (num1 === 0) {
return 0
}
if (num2 === 0) {
return 'Error: cannot divide by zero'
}
for (i = num1; i > 0; i = i - num2) {
if (i < num2) {
break
}
}
return i
}
-結果国境を越える👌
- Reference code
function modulo(num1, num2) {
if (num2 === 0) {
return 'Error: cannot divide by zero';
}
while (num1 >= num2) {
num1 = num1 - num2;
}
return num1;
}
for文の代わりにwhile文を使用すると、より簡潔な符号化になります.初期文を入れず、1つの増監文だけで儀式を実現した.に質問📓
文字列を受け入れ、等軸図であるかどうかを返します.等値線図とは、アルファベットごとに1回しか使用しない単語や文を指す.
-I/O
let output = isIsogram('aba');
console.log(output); // false
output = isIsogram('Dermatoglyphics');
console.log(output); // true
output = isIsogram('moOse');
console.log(output); // false
-答えは?1)文字列を大文字または小文字に整理します.
2)for文を使用して、インデックスと次のインデックスの値を比較します.
3)外部forクエリの範囲は最後のインデックスの前に限られる.最後のインデックスは、前のすべてのインデックスと比較されているからです.
function isIsogram(str) {
if (str.length === 0) {
return true;
}
let newStr = str.toUpperCase()
for (let i = 0; i < newStr.length - 1; i++) {
for (let j = i + 1; j < newStr.length; j++) {
if (newStr[i] === newStr[j]) {
return false;
}
}
}
return true;
}
-結果国境を越える👌
- Reference code
function isIsogram(str) {
if (str.length === 0) {
return true;
}
let cache = {};
let strLowered = str.toLowerCase();
for (let i = 0; i < strLowered.length; i++) {
if (cache[strLowered[i]]) {
return false;
}
cache[strLowered[i]] = true;
}
return true;
}
対象を活用した.オブジェクトのキーを文字列のインデックス値として「true」とします.key値が含まれている場合はfalseを返す必要があります.
Reference
この問題について(Algorithm Basic_#4), 我々は、より多くの情報をここで見つけました https://velog.io/@jonghwan2_y/Algorithm-Basic4テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol