准备笔试第20天,牛客.mari和shiny牛客.对称之美牛客.最小公倍数牛客.非对称之美
创始人
2024-11-11 07:35:24

目录

牛客.mari和shiny

牛客.对称之美

牛客.最小公倍数

牛客.非对称之美


牛客.mari和shiny

1.状态转移方程

s[i]:表示字符串str中[0,i]区间内,有多少个s。

h[i]:字符串str中[0,i]区间内,有多少个sh。

y[i]:字符串str[0,i]区间内,有多少个shy。

2.状态转移方程

(0-i-1)区间

s[i]

h[i]

y[i]

import java.util.*; public class Main{     //多状态dp       public static void main(String[] args)  {       Scanner in=new Scanner(System.in);             int n=in.nextInt();             in.nextLine();             String a=in.nextLine();             char[]str=a.toCharArray();            long[]s=new long[n+1];             long[]h=new long[n+1];             long[]y=new long[n+1];             //初始化,看他是s,就初始化为1             for(int i=1;i<=str.length;i++){                 if(str[i-1]=='s'){                     s[i]=s[i-1]+1;                     h[i]=h[i-1];                     y[i]=y[i-1];                 }else if(str[i-1]=='h'){                     s[i]=s[i-1]; //假如第一个是h,但是前面没有s,所以h还是为0                     h[i]=s[i-1]+h[i-1];                     y[i]=y[i-1];                 }else if(str[i-1]=='y'){                     s[i]=s[i-1];                     h[i]=h[i-1];                     y[i]=h[i-1]+y[i-1];                 }else{                     s[i]=s[i-1];                     h[i]=h[i-1];                     y[i]=y[i-1];                 }             }             System.out.print(y[n]);     } }

牛客.对称之美

import java.util.*; public class Main{     public static boolean check(boolean[][]hash,int left,int right){         for(int i=0;i<26;i++){             if(hash[left][i]&&hash[right][i]){                 return true;             }         }             return false;               } public static void main(String[] args) {        Scanner in=new Scanner(System.in);         int t = in.nextInt();         for(int i=0;i

牛客.最小公倍数

 public static int gcd(int a,int b){         if(b==0)return a;         return gcd(b,a%b);     }

牛客.非对称之美

回文串(一般解法,中心扩展算法,dp,动态窗口等等)

找规律,贪心

如果本身就不是回文串,那么直接返回全部

假如本身是一个字符串,他其实是关于中心对称的,那么只要为对左边或者右边对应的删除一个,就是非回文,

换句话说,我们只需要看一个字符串是不是回文,

除非你是aaaaaa这种,所有这种字符串都相同的时候,这种没有非回文串,只需要返回0。

import java.util.*; public class Main{     public static void main(String[]args){         Scanner in=new Scanner(System.in);         String aa=in.nextLine();         char[]a=aa.toCharArray();         //首先先检查他是不是回文串         int left=0;         int right=a.length-1;         while(left=right)         {             System.out.print(a.length-1);         }else{             System.out.print(a.length);         }             } }

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...