LeetCode热题100道-Day02
- 可以采用中心扩散法进行截取最长回文,从i=>i这个范围截取,从i=>i+1这个范围截取
class Solution {
public String longestPalindrome(String s) {
if(s == null || s.length() == 0) return "";
int l,r = 0;
String res = "";
for(int i = 0; i < s.length(); i ++){
String s1 = palindrome(s,i,i);
String s2 = palindrome(s,i,i+1);
res = res.length() > s1.length() ? res : s1;
res = res.length() > s2.length() ? res : s2;
}
return res;
}
public String palindrome(String s,int l,int r){
if(s == null || s.length() == 0) return "";
while(l >= 0 && r < s.length() && s.charAt(l) == s.charAt(r)){
l--;
r++;
}
return s.substring(l+1,r);
}
}
func longestPalindrome(s string) string {
if len(s) == 0 {
return ""
}
res := ""
for i := 0; i < len(s); i++ {
s1 := palindrome(s, i, i)
s2 := palindrome(s, i, i+1)
if len(res) < len(s1) {
res = s1
}
if len(res) < len(s2) {
res = s2
}
}
return res
}
func palindrome(s string, l, r int) string {
if len(s) == 0 {
return ""
}
for l >= 0 && r < len(s) && s[l] == s[r] {
l--
r++
}
return s[l+1 : r]
}
class Solution {
public int reverse(int x) {
if(x == 0) return 0;
int rev = 0;
while(x != 0){
if(rev < Integer.MIN_VALUE/10 || rev > Integer.MAX_VALUE/10){
return 0;
}
int digit = x % 10;
x /= 10;
rev = rev*10+digit;
}
return rev;
}
}
func reverse(x int) (rev int) {
for x != 0 {
if rev < math.MinInt32/10 || rev > math.MaxInt32/10 {
return 0
}
digit := x % 10
x /= 10
rev = rev*10 + digit
}
return
}
- 遍历字符串,c要么是1就是0,如果 1 != 0 或者 0 != 1 就累加一次
class Solution {
public int minOperations(String s) {
if(s == null || s.length() == 0) return 0;
int cnt = 0;
for(int i = 0; i < s.length(); i++){
char c = s.charAt(i);
if(i % 2 != (c - '0')){
cnt ++;
}
}
return Math.min(cnt,s.length() - cnt);
}
}
func minOperations(s string)class Solution {
public int minOperations(String s) {
if(s == null || s.length() == 0) return 0;
int cnt = 0;
for(int i = 0; i < s.length(); i++){
char c = s.charAt(i);
if(i % 2 != (c - '0')){
cnt ++;
}
}
return Math.min(cnt,s.length() - cnt);
}
} int {
if len(s) == 0 {
return 0
}
cnt := 0
for i, c := range s {
if i%2 != int(c-'0') {
cnt++
}
}
return min(cnt, len(s)-cnt)
}
func min(a, b int) int {
if a > b {
return b
}
return a
}