A space explorer’s ship crashed on Mars! They send a series of SOS messages to Earth for help.
Letters in some of the SOS messages are altered by cosmic radiation during transmission. Given the signal received by Earth as a string, s, determine how many letters of the SOS message have been changed by radiation.
一個太空探索者的飛船墜毀在火星上!他們向地球發送一系列 SOS 信息尋求協助。 在 SOS 信息字母在傳輸過程中會被宇宙輻射改變。給予地球以字母形式接收的信號 s,確定 SOS 信息中有多少字母因輻設而改變。
Example 1:
s = "SOSTOT" The original message was SOSSOS. Two of the message's characters were changed in transit.
solution:
試著將 SOS 標準信息找出規律,以此將遍歷的過程以三元運算式判斷,
發現只要是 3 的倍數且餘 1,如符合則為 “O”,不符合則為 “S”。
後續確認遍歷過程中,不符合標準信息之字母,運用 count += 1 紀錄後回傳。
S O S S O S S O S S O S S O 0 1 2 3 4 5 6 7 8 9 10 11 12 13
Code 1: BigO(n)
'use strict'; const fs = require('fs'); process.stdin.resume(); process.stdin.setEncoding('utf-8'); let inputString = ''; let currentLine = 0; process.stdin.on('data', function(inputStdin) { inputString += inputStdin; }); process.stdin.on('end', function() { inputString = inputString.split('\n'); main(); }); function readLine() { return inputString[currentLine++]; } /* * Complete the 'marsExploration' function below. * * The function is expected to return an INTEGER. * The function accepts STRING s as parameter. */ function marsExploration(s) { // Write your code here let count = 0 for (let i = 0; i < s.length; i++) { let letter = (i % 3 === 1) ? "O" : "S" if (s.charAt(i) !== letter) count++ } return count; } function main() { const ws = fs.createWriteStream(process.env.OUTPUT_PATH); const s = readLine(); const result = marsExploration(s); ws.write(result + '\n'); ws.end(); }
FlowChart:
Example 1
s = "SOSTOT" STD = "SOSSOS" s = "SOSTOT return count //2