Java C++ leetcode執(zhí)行一次字符串交換能否使兩個字符串相等
更新時間:2022年10月11日 17:04:58 作者:AnjaVon
這篇文章主要為大家介紹了Java C++ leetcode1790執(zhí)行一次字符串交換能否使兩個字符串相等,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
題目要求


思路:模擬

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 < s1.length(); i++) {
if (s1.charAt(i) == s2.charAt(i))
continue;
if (a == -1)
a = i; // 第一個不同
else if (b == -1)
b = i; // 第二個不同
else
return false; // 兩個以上不相同
}
if (a == -1) // 全相同
return true;
if (a != -1 && b == -1) // 一個不同
return false;
return s1.charAt(a) == s2.charAt(b) && s1.charAt(b) == s2.charAt(a); // 不同位置字符相同
}
}
- 時間復(fù)雜度:O(n)
- 空間復(fù)雜度: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 < s1.size(); i++) {
if (s1[i] == s2[i])
continue;
if (a == -1)
a = i; // 第一個不同
else if (b == -1)
b = i; // 第二個不同
else
return false; // 兩個以上不相同
}
if (a == -1) // 全相同
return true;
if (a != -1 && b == -1) // 一個不同
return false;
return s1[a] == s2[b] && s1[b] == s2[a]; // 不同位置字符相同
}
};
- 時間復(fù)雜度:O(n)
- 空間復(fù)雜度: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] // 不同位置字符相同
}
}
- 時間復(fù)雜度:O(n)
- 空間復(fù)雜度:O(1)
以上就是Java C++ leetcode執(zhí)行一次字符串交換能否使兩個字符串相等的詳細(xì)內(nèi)容,更多關(guān)于Java C++ 字符串交換相等的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
springboot注解Aspect實(shí)現(xiàn)方案
本文提供一種自定義注解,來實(shí)現(xiàn)業(yè)務(wù)審批操作的DEMO,不包含審批流程的配置功能。對springboot注解Aspect實(shí)現(xiàn)方案感興趣的朋友一起看看吧2022-01-01
intellij idea設(shè)置統(tǒng)一JavaDoc模板的方法詳解
這篇文章主要介紹了intellij idea設(shè)置統(tǒng)一JavaDoc模板的方法詳解,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04
Mybatis事務(wù)如何跟Spring結(jié)合(數(shù)據(jù)庫事務(wù)特性和Spring事務(wù)管理源碼)
MyBatis與Spring的事務(wù)結(jié)合主要是通過Spring的事務(wù)管理和MyBatis的數(shù)據(jù)庫操作來實(shí)現(xiàn)的,在本文中,我們將從數(shù)據(jù)庫事務(wù)特性和Spring事務(wù)管理源碼兩個角度來分析MyBatis事務(wù)如何與Spring結(jié)合到一起的原理,感興趣的朋友一起看看吧2024-01-01
SpringBoot+MyBatisPlus+Vue 前后端分離項(xiàng)目快速搭建過程(后端)
這篇文章主要介紹了SpringBoot+MyBatisPlus+Vue 前后端分離項(xiàng)目快速搭建過程(后端),快速生成后端代碼、封裝結(jié)果集、增刪改查、模糊查找,畢設(shè)基礎(chǔ)框架,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-05-05

