统计回文_连续最大和

举报
bug郭 发表于 2022/08/26 23:51:49 2022/08/26
【摘要】 统计回文统计回文import java.util.*;public class Main{ public static boolean isPalindrome1(StringBuilder str){ StringBuilder tmp = new StringBuilder(str); tmp.reverse(); //注意这里要...

统计回文

统计回文

image-20220430115123006

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);
        }
    }
}

连续最大和

连续最大和

image-20220430130618786

// 经典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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。