oppo字符串

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

思路

本题要求判断一个长度为 4 的字符串是否为 oppo 型字符串

定义

oppo 型字符串需要同时满足两个条件:

  1. 是回文串:即
  2. 第一个字符不等于第二个字符:即

分析

oppo 为例:

  • o o
  • p p
  • o p

三个条件都满足,输出 Yes

aaaa 为例:虽然是回文串,但 a,不满足第二个条件,输出 No

实现

直接按定义检查三个条件即可,无需任何额外数据结构。

代码

#include <iostream>
#include <string>
using namespace std;
int main() {
    string s;
    cin >> s;
    if (s[0] == s[3] && s[1] == s[2] && s[0] != s[1]) {
        cout << "Yes" << endl;
    } else {
        cout << "No" << endl;
    }
    return 0;
}
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        if (s.charAt(0) == s.charAt(3) && s.charAt(1) == s.charAt(2) && s.charAt(0) != s.charAt(1)) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }
    }
}

复杂度分析

  • 时间复杂度,只需常数次字符比较。
  • 空间复杂度,仅使用常数额外空间。