小欧的字符串判定

[题目链接](https://www.nowcoder.com/practice/36f1cc91b5d04df2896b91f5e18fa092)

思路

本题给定两个字符串 ,以及目标字符串 ,三者长度均为 。对于目标字符串的每个位置 ,可以从 中选取一个字符。问能否拼出目标字符串

逐位判定

每个位置的选择是独立的,互不影响。因此只需逐一检查:对于每个位置 ,是否有

  • 如果所有位置都满足条件,输出 Yes
  • 只要有任意一个位置不满足,就输出 No

复杂度分析

  • 时间复杂度,遍历一遍字符串即可。
  • 空间复杂度,存储三个字符串。

代码

C++

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin >> n;
    string a, b, c;
    cin >> a >> b >> c;
    for(int i = 0; i < n; i++){
        if(c[i] != a[i] && c[i] != b[i]){
            cout << "No" << endl;
            return 0;
        }
    }
    cout << "Yes" << endl;
    return 0;
}

Java

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        String a = sc.next();
        String b = sc.next();
        String c = sc.next();
        for (int i = 0; i < n; i++) {
            if (c.charAt(i) != a.charAt(i) && c.charAt(i) != b.charAt(i)) {
                System.out.println("No");
                return;
            }
        }
        System.out.println("Yes");
    }
}

Python

n = int(input())
a = input()
b = input()
c = input()
for i in range(n):
    if c[i] != a[i] and c[i] != b[i]:
        print("No")
        exit()
print("Yes")

JavaScript

const readline = require('readline');
const rl = readline.createInterface({ input: process.stdin });
const lines = [];
rl.on('line', line => lines.push(line.trim()));
rl.on('close', () => {
    const n = parseInt(lines[0]);
    const a = lines[1];
    const b = lines[2];
    const c = lines[3];
    for (let i = 0; i < n; i++) {
        if (c[i] !== a[i] && c[i] !== b[i]) {
            console.log("No");
            return;
        }
    }
    console.log("Yes");
});