diff --git a/solution/0600-0699/0680.Valid Palindrome II/README.md b/solution/0600-0699/0680.Valid Palindrome II/README.md index b651d09244914..8d0a6481253af 100644 --- a/solution/0600-0699/0680.Valid Palindrome II/README.md +++ b/solution/0600-0699/0680.Valid Palindrome II/README.md @@ -94,18 +94,21 @@ class Solution: ```java class Solution { - public boolean validPalindrome(String s) { - for (int i = 0, j = s.length() - 1; i < j; ++i, --j) { - if (s.charAt(i) != s.charAt(j)) { - return check(s, i + 1, j) || check(s, i, j - 1); + private char[] s; + + public boolean validPalindrome(String S) { + this.s = S.toCharArray(); + for (int i = 0, j = s.length - 1; i < j; ++i, --j) { + if (s[i] != s[j]) { + return check(i + 1, j) || check(i, j - 1); } } return true; } - private boolean check(String s, int i, int j) { + private boolean check(int i, int j) { for (; i < j; ++i, --j) { - if (s.charAt(i) != s.charAt(j)) { + if (s[i] != s[j]) { return false; } } @@ -120,18 +123,17 @@ class Solution { class Solution { public: bool validPalindrome(string s) { - for (int i = 0, j = s.size() - 1; i < j; ++i, --j) { - if (s[i] != s[j]) { - return check(s, i + 1, j) || check(s, i, j - 1); + auto check = [&](int i, int j) { + for (; i < j; ++i, --j) { + if (s[i] != s[j]) { + return false; + } } - } - return 1; - } - - bool check(string s, int i, int j) { - for (; i < j; ++i, --j) { + return true; + }; + for (int i = 0, j = s.size() - 1; i < j; ++i, --j) { if (s[i] != s[j]) { - return false; + return check(i + 1, j) || check(i, j - 1); } } return true; @@ -164,18 +166,17 @@ func validPalindrome(s string) bool { ```ts function validPalindrome(s: string): boolean { - for (let i: number = 0, j = s.length - 1; i < j; ++i, --j) { - if (s.charAt(i) != s.charAt(j)) { - return isPalinddrome(s.slice(i, j)) || isPalinddrome(s.slice(i + 1, j + 1)); + const check = (i: number, j: number): boolean => { + for (; i < j; ++i, --j) { + if (s[i] !== s[j]) { + return false; + } } - } - return true; -} - -function isPalinddrome(s: string): boolean { - for (let i: number = 0, j = s.length - 1; i < j; ++i, --j) { - if (s.charAt(i) != s.charAt(j)) { - return false; + return true; + }; + for (let i = 0, j = s.length - 1; i < j; ++i, --j) { + if (s[i] !== s[j]) { + return check(i + 1, j) || check(i, j - 1); } } return true; @@ -190,16 +191,16 @@ function isPalinddrome(s: string): boolean { * @return {boolean} */ var validPalindrome = function (s) { - let check = function (i, j) { + const check = function (i, j) { for (; i < j; ++i, --j) { - if (s.charAt(i) != s.charAt(j)) { + if (s[i] !== s[j]) { return false; } } return true; }; for (let i = 0, j = s.length - 1; i < j; ++i, --j) { - if (s.charAt(i) != s.charAt(j)) { + if (s[i] !== s[j]) { return check(i + 1, j) || check(i, j - 1); } } diff --git a/solution/0600-0699/0680.Valid Palindrome II/README_EN.md b/solution/0600-0699/0680.Valid Palindrome II/README_EN.md index 81e3c902dc8f9..6826d68fbe174 100644 --- a/solution/0600-0699/0680.Valid Palindrome II/README_EN.md +++ b/solution/0600-0699/0680.Valid Palindrome II/README_EN.md @@ -91,18 +91,21 @@ class Solution: ```java class Solution { - public boolean validPalindrome(String s) { - for (int i = 0, j = s.length() - 1; i < j; ++i, --j) { - if (s.charAt(i) != s.charAt(j)) { - return check(s, i + 1, j) || check(s, i, j - 1); + private char[] s; + + public boolean validPalindrome(String S) { + this.s = S.toCharArray(); + for (int i = 0, j = s.length - 1; i < j; ++i, --j) { + if (s[i] != s[j]) { + return check(i + 1, j) || check(i, j - 1); } } return true; } - private boolean check(String s, int i, int j) { + private boolean check(int i, int j) { for (; i < j; ++i, --j) { - if (s.charAt(i) != s.charAt(j)) { + if (s[i] != s[j]) { return false; } } @@ -117,18 +120,17 @@ class Solution { class Solution { public: bool validPalindrome(string s) { - for (int i = 0, j = s.size() - 1; i < j; ++i, --j) { - if (s[i] != s[j]) { - return check(s, i + 1, j) || check(s, i, j - 1); + auto check = [&](int i, int j) { + for (; i < j; ++i, --j) { + if (s[i] != s[j]) { + return false; + } } - } - return 1; - } - - bool check(string s, int i, int j) { - for (; i < j; ++i, --j) { + return true; + }; + for (int i = 0, j = s.size() - 1; i < j; ++i, --j) { if (s[i] != s[j]) { - return false; + return check(i + 1, j) || check(i, j - 1); } } return true; @@ -161,18 +163,17 @@ func validPalindrome(s string) bool { ```ts function validPalindrome(s: string): boolean { - for (let i: number = 0, j = s.length - 1; i < j; ++i, --j) { - if (s.charAt(i) != s.charAt(j)) { - return isPalinddrome(s.slice(i, j)) || isPalinddrome(s.slice(i + 1, j + 1)); + const check = (i: number, j: number): boolean => { + for (; i < j; ++i, --j) { + if (s[i] !== s[j]) { + return false; + } } - } - return true; -} - -function isPalinddrome(s: string): boolean { - for (let i: number = 0, j = s.length - 1; i < j; ++i, --j) { - if (s.charAt(i) != s.charAt(j)) { - return false; + return true; + }; + for (let i = 0, j = s.length - 1; i < j; ++i, --j) { + if (s[i] !== s[j]) { + return check(i + 1, j) || check(i, j - 1); } } return true; @@ -187,16 +188,16 @@ function isPalinddrome(s: string): boolean { * @return {boolean} */ var validPalindrome = function (s) { - let check = function (i, j) { + const check = function (i, j) { for (; i < j; ++i, --j) { - if (s.charAt(i) != s.charAt(j)) { + if (s[i] !== s[j]) { return false; } } return true; }; for (let i = 0, j = s.length - 1; i < j; ++i, --j) { - if (s.charAt(i) != s.charAt(j)) { + if (s[i] !== s[j]) { return check(i + 1, j) || check(i, j - 1); } } diff --git a/solution/0600-0699/0680.Valid Palindrome II/Solution.cpp b/solution/0600-0699/0680.Valid Palindrome II/Solution.cpp index 81411d025636e..fed27c2bb3771 100644 --- a/solution/0600-0699/0680.Valid Palindrome II/Solution.cpp +++ b/solution/0600-0699/0680.Valid Palindrome II/Solution.cpp @@ -1,20 +1,19 @@ class Solution { public: bool validPalindrome(string s) { - for (int i = 0, j = s.size() - 1; i < j; ++i, --j) { - if (s[i] != s[j]) { - return check(s, i + 1, j) || check(s, i, j - 1); + auto check = [&](int i, int j) { + for (; i < j; ++i, --j) { + if (s[i] != s[j]) { + return false; + } } - } - return 1; - } - - bool check(string s, int i, int j) { - for (; i < j; ++i, --j) { + return true; + }; + for (int i = 0, j = s.size() - 1; i < j; ++i, --j) { if (s[i] != s[j]) { - return false; + return check(i + 1, j) || check(i, j - 1); } } return true; } -}; \ No newline at end of file +}; diff --git a/solution/0600-0699/0680.Valid Palindrome II/Solution.java b/solution/0600-0699/0680.Valid Palindrome II/Solution.java index b5935b48e052f..c9c7ae87808d3 100644 --- a/solution/0600-0699/0680.Valid Palindrome II/Solution.java +++ b/solution/0600-0699/0680.Valid Palindrome II/Solution.java @@ -1,19 +1,22 @@ class Solution { - public boolean validPalindrome(String s) { - for (int i = 0, j = s.length() - 1; i < j; ++i, --j) { - if (s.charAt(i) != s.charAt(j)) { - return check(s, i + 1, j) || check(s, i, j - 1); + private char[] s; + + public boolean validPalindrome(String S) { + this.s = S.toCharArray(); + for (int i = 0, j = s.length - 1; i < j; ++i, --j) { + if (s[i] != s[j]) { + return check(i + 1, j) || check(i, j - 1); } } return true; } - private boolean check(String s, int i, int j) { + private boolean check(int i, int j) { for (; i < j; ++i, --j) { - if (s.charAt(i) != s.charAt(j)) { + if (s[i] != s[j]) { return false; } } return true; } -} \ No newline at end of file +} diff --git a/solution/0600-0699/0680.Valid Palindrome II/Solution.js b/solution/0600-0699/0680.Valid Palindrome II/Solution.js index 0b49415f3e812..6367de062eb9b 100644 --- a/solution/0600-0699/0680.Valid Palindrome II/Solution.js +++ b/solution/0600-0699/0680.Valid Palindrome II/Solution.js @@ -3,16 +3,16 @@ * @return {boolean} */ var validPalindrome = function (s) { - let check = function (i, j) { + const check = function (i, j) { for (; i < j; ++i, --j) { - if (s.charAt(i) != s.charAt(j)) { + if (s[i] !== s[j]) { return false; } } return true; }; for (let i = 0, j = s.length - 1; i < j; ++i, --j) { - if (s.charAt(i) != s.charAt(j)) { + if (s[i] !== s[j]) { return check(i + 1, j) || check(i, j - 1); } } diff --git a/solution/0600-0699/0680.Valid Palindrome II/Solution.ts b/solution/0600-0699/0680.Valid Palindrome II/Solution.ts index 0a19acc25e2f5..1481e67171aa1 100644 --- a/solution/0600-0699/0680.Valid Palindrome II/Solution.ts +++ b/solution/0600-0699/0680.Valid Palindrome II/Solution.ts @@ -1,16 +1,15 @@ function validPalindrome(s: string): boolean { - for (let i: number = 0, j = s.length - 1; i < j; ++i, --j) { - if (s.charAt(i) != s.charAt(j)) { - return isPalinddrome(s.slice(i, j)) || isPalinddrome(s.slice(i + 1, j + 1)); + const check = (i: number, j: number): boolean => { + for (; i < j; ++i, --j) { + if (s[i] !== s[j]) { + return false; + } } - } - return true; -} - -function isPalinddrome(s: string): boolean { - for (let i: number = 0, j = s.length - 1; i < j; ++i, --j) { - if (s.charAt(i) != s.charAt(j)) { - return false; + return true; + }; + for (let i = 0, j = s.length - 1; i < j; ++i, --j) { + if (s[i] !== s[j]) { + return check(i + 1, j) || check(i, j - 1); } } return true;