0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

今回は paiza の「taぬき」の問題に挑戦!


🦝 問題概要

与えられた文字列 S の中から、
文字 't' と 'a' をすべて削除した文字列を出力する。



入力例:

metdtiaum

出力例:

medium






✅OK例:

const rl = require('readline').createInterface({ input: process.stdin });
const lines = [];

rl.on('line', (input) => lines.push(input));

rl.on('close', () => {
    const s = lines[0]; // 入力文字列を取得
    
    const ans = [];
    for (let i = 0; i < s.length; i++) {
        if (s[i] !== 't' && s[i] !== 'a') { // tでもaでもないなら残す
            ans.push(s[i]);
        }
    }
    
    console.log(ans.join('')); // 配列を文字列に戻して出力
});




🔍 もっと短く書くなら!

const s = require("fs").readFileSync(0, "utf8").trim();
console.log(s.replace(/[ta]/g, ""));

✅ 短縮版のポイント

  • .replace(/[ta]/g, "")
    → 正規表現で 't' または 'a' をすべて削除
  • g は “global”(全体置換)の意味






📝まとめ

  • 文字列から特定の文字を除外する基本練習
  • 2つのアプローチがある
    🔹for文+条件分岐
    🔹正規表現+replace()
  • .join('') は配列を文字列に戻すメソッド
  • !== は「でない」条件
  • "t""a" の両方に当てはまらないときだけ残す






💡おまけ:正規表現バージョンの解説

const s = require("fs").readFileSync(0, "utf8").trim();
console.log(s.replace(/[ta]/g, ""));

⭐ 1行目:入力を読み取り、改行を削る

const s = require("fs").readFileSync(0, "utf8").trim();

  • require("fs")
    → Node.js の組み込みモジュール fs(ファイル操作)を読み込む。
  • .readFileSync(0, "utf8")
    → ファイル記述子 0 は 標準入力 (stdin) を意味する。
    readFileSync(0, "utf8")stdin を同期的に全て読み取り、UTF-8 の文字列として返す、ということ。
    たとえば入力が metdtiaum\n なら戻り値は "metdtiaum\n" (改行付き)。
  • .trim()
    → 文字列の先頭と末尾の空白文字(スペースやタブ、改行)を除去する。
    例:"metdtiaum\n".trim()"metdtiaum"
    この問題は入力が1行なので、行末の改行を落とすために trim() を使うのが自然。
    注意:複数行をそのまま扱いたい場合は trim() が不要/邪魔になることがあるので要注意。

結果として s は処理対象のクリーンな文字列になる。




⭐ 2行目:置換(削除)の実行

console.log(s.replace(/[ta]/g, ""));

  • s.replace(pattern, replacement) は、文字列 s の中で pattern にマッチする箇所を replacement に置き換えるメソッド。
  • Ppattern に使っている /[ta]/g は 正規表現(RegExp):
    • / ... / の中身がパターン。
    • [ta] は 文字クラス: 't' または 'a' を意味する。
      角括弧の中は「どれか1文字にマッチ」する。例えば [abc]a または b または c
    • g は global(グローバル)フラグ:文字列中の すべての一致箇所 を対象にする、という意味。 g が無いと最初に見つかった1箇所だけしか置換されない。
  • replacement""(空文字)を渡しているので、マッチした文字は 取り除かれる(削除される) ことになる。

まとめると、文字列中のすべての 't''a' を空文字で置き換える=削除する、という動作。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?