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)文章
Java編程實(shí)現(xiàn)軌跡壓縮算法開放窗口實(shí)例代碼
這篇文章主要介紹了Java編程實(shí)現(xiàn)軌跡壓縮算法開放窗口實(shí)例代碼,具有一定借鑒價值,需要的朋友可以參考下。2017-11-11Gitlab CI-CD自動化部署SpringBoot項(xiàng)目的方法步驟
本文主要記錄如何通過Gitlab CI/CD自動部署SpringBoot項(xiàng)目jar包。文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07java讀取文件顯示進(jìn)度條的實(shí)現(xiàn)方法
當(dāng)讀取一個大文件時,一時半會兒無法看到讀取結(jié)果,就需要顯示一個進(jìn)度條,是程序員明白已經(jīng)讀了多少文件,可以估算讀取還需要多少時間,下面的代碼可以實(shí)現(xiàn)這個功能2014-01-01Spring Cloud 配置中心多環(huán)境配置bootstrap.yml的實(shí)現(xiàn)方法
spring cloud用上了配置中心,就一個boostrap.yml,本文就來介紹一下Spring Cloud 配置中心多環(huán)境配置bootstrap.yml的實(shí)現(xiàn)方法,感興趣的可以了解一下2024-03-03Springboot整合redis實(shí)現(xiàn)發(fā)布訂閱功能介紹步驟
發(fā)布訂閱作為一種設(shè)計思想在很多開源組件中都有體現(xiàn),比如大家熟知的消息中間件等,可謂把發(fā)布訂閱這一思想體現(xiàn)的淋漓盡致了2022-09-09