首页你问我答Java C++ leetcode执行一次字符串交换能否使两个字符串相等

Java C++ leetcode执行一次字符串交换能否使两个字符串相等

admin 11-28 10:17 253次浏览

题目要求

Java C++ leetcode执行一次字符串交换能否使两个字符串相等_第1张图片

思路:模拟

Java C++ leetcode执行一次字符串交换能否使两个字符串相等_第3张图片

Java

class Solution {
    public boolean areAlmostEqual(String s1, String s2) {
        if (s1.length() != s2.length())
            return false;
        int a = -1, b = -1;
        for (int i = 0; i  
 
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

C++

class Solution {
public:
    bool areAlmostEqual(string s1, string s2) {
        if (s1.size() != s2.size())
            return false;
        int a = -1, b = -1;
        for (int i = 0; i  
 
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

Rust

  • 记得要把字符串改成可操作的……
impl Solution {
    pub fn are_almost_equal(s1: String, s2: String) -> bool {
        if (s1.len() != s2.len()) {
            return false;
        }
        let n = s1.len();
        let (mut a, mut b) = (n, n);
        let (s1, s2) = (s1.as_bytes(), s2.as_bytes());
        for i in 0..n {
            if s1[i] == s2[i] {
                continue;
            }
            if a == n {
                a = i; // 第一个不同
            }
            else if b == n {
                b = i; // 第二个不同
            }
            else {
                return false; // 两个以上不相同
            }
        }
        if a == n { // 全相同
            return true;
        }
        if a != n && b == n { // 一个不同
            return false;
        }
        s1[a] == s2[b] && s1[b] == s2[a] // 不同位置字符相同
    }
}
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

以上就是Java C++ leetcode执行一次字符串交换能否使两个字符串相等的详细内容,更多关于Java C++ 字符串交换相等的资料请关注脚本之家其它相关文章!

Java C++ leetcode执行一次字符串交换能否使两个字符串相等
FAQ VPN网关 IPSecVPN 一分快三大小单双技巧_快3十大必中技巧
相关内容