统计回文_连续最大和
【摘要】 统计回文统计回文import java.util.*;public class Main{ public static boolean isPalindrome1(StringBuilder str){ StringBuilder tmp = new StringBuilder(str); tmp.reverse(); //注意这里要...
统计回文
import java.util.*;
public class Main{
public static boolean isPalindrome1(StringBuilder str){
StringBuilder tmp = new StringBuilder(str);
tmp.reverse();
//注意这里要先转成String 因为 StringBuilder中没有 equals 方法!
return str.toString().equals(tmp.toString());
}
public static boolean isPalindrome(StringBuilder str){
int l = 0,end = str.length()-1;
while (l<end){
if(str.charAt(l)!=str.charAt(end)){
return false;
}
l++;
end--;
}
return true;
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
StringBuilder str1 = new StringBuilder(sc.nextLine());
String str2 = sc.nextLine();
int count = 0;
for(int i = 0;i<=str1.length();i++){
StringBuilder tmp = new StringBuilder(str1);
//在第i位置插入!
if(isPalindrome(tmp.insert(i,str2))){
count++;//次数++
}
}
System.out.println(count);
}
}
}
连续最大和
// 经典dp问题
// 假设dp[n]表示以n为最后一个元素的子数组和的最大值,
// 因此, dp[n] = max(dp[n-1],0)+num[n];
// 当然实现的时候,没有必要设置一个数组保存所有的情况,因为只是用到了前一个位置的计算结果。
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = 0;
while(sc.hasNext()){
n = sc.nextInt();
int[] num = new int[n];
for(int i=0;i<n;i++){
num[i] = sc.nextInt();
}
int max = num[0];
for(int i=1;i<n;i++){//保存连续值!
num[i] = Math.max(num[i-1],0)+num[i];
if(max<num[i]){
max=num[i];
}
}
System.out.println(max);
}
}
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)