怎样建设档案馆网站,公众号怎么运营,网站的开发流程分哪几步,阳谷聊城网站优化1. 最长回文子串 -- 中心扩散法
给你一个字符串 s#xff0c;找到 s 中最长的回文子串。
如果字符串的反序与原始字符串相同#xff0c;则该字符串称为回文字符串。
示例 1#xff1a;
输入#xff1a;s babad
输出#xff1a;bab
解释…1. 最长回文子串 -- 中心扩散法
给你一个字符串 s找到 s 中最长的回文子串。
如果字符串的反序与原始字符串相同则该字符串称为回文字符串。
示例 1
输入s babad
输出bab
解释aba 同样是符合题意的答案。
class Solution {//中心扩散String max ;public String longestPalindrome(String s) {for(int i 0; i s.length(); i){//回文串是偶数dfs(s, i ,i);//回文串是奇数dfs(s, i, i 1);}return max;}void dfs(String s, int left, int right){String tmp;while(left 0 right s.length() s.charAt(left) s.charAt(right)){tmp s.substring(left, right 1);if(tmp.length() max.length()){max tmp;}left--;right;}}
2. 插入后的最大值 -- 逻辑思维能力
给你一个非常大的整数 n 和一个整数数字 x 大整数 n 用一个字符串表示。n 中每一位数字和数字 x 都处于闭区间 [1, 9] 中且 n 可能表示一个 负数 。
你打算通过在 n 的十进制表示的任意位置插入 x 来 最大化 n 的 数值 。但 不能 在负号的左边插入 x 。
例如如果 n 73 且 x 6 那么最佳方案是将 6 插入 7 和 3 之间使 n 763 。如果 n -55 且 x 2 那么最佳方案是将 2 插在第一个 5 之前使 n -255 。
返回插入操作后用字符串表示的 n 的最大值。
输入n -13, x 2
输出-123
解释向 n 中插入 x 可以得到 -213、-123 或者 -132 三者中最大的是 -123 。
关键分正负正数寻找第一次比高位小插入负数寻找第一次比高位大的插入
class Solution {public String maxValue(String n, int x) {int len n.length();String res ;if(!n.substring(0,1).equals(-)){for(int i 0; i n.length(); i){String tmp n.substring(i,i 1);//注意integer会自动拆箱可以直接比较if(Integer.parseInt(tmp) x){res res x n.substring(i);break;}res res tmp;}if(res.length() len){res res x;}}else{res -;for(int i 1; i n.length(); i){String tmp n.substring(i,i 1);if(Integer.parseInt(tmp) x){res res x n.substring(i);break;}res res tmp;}if(res.length() len){res res x;}}return res;}
}
3. 水果成篮 -- 滑动窗口
关键本题的关键不在方法而在对题目的理解上读懂题就soeasy否则gg我最后是让面试官给我解释清啥意思的千万别憋着你就一个劲问。。。题目翻译成人话就是 找至多包含两种元素的最长子串返回其长度
你正在探访一家农场农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示其中 fruits[i] 是第 i 棵树上的水果 种类 。
你想要尽可能多地收集水果。然而农场的主人设定了一些严格的规矩你必须按照要求采摘水果
你只有 两个 篮子并且每个篮子只能装 单一类型 的水果。每个篮子能够装的水果总量没有限制。你可以选择任意一棵树开始采摘你必须从 每棵 树包括开始采摘的树上 恰好摘一个水果 。采摘的水果应当符合篮子中的水果类型。每采摘一次你将会向右移动到下一棵树并继续采摘。一旦你走到某棵树前但水果不符合篮子的水果类型那么就必须停止采摘。
给你一个整数数组 fruits 返回你可以收集的水果的 最大 数目。 示例 1
输入fruits [1,2,1]
输出3
解释可以采摘全部 3 棵树。class Solution {public int totalFruit(int[] fruits) {//map类型数量MapInteger, Integer map new HashMap();int ans 0;int x, y;for(int l 0, r 0; r fruits.length; r){//你就往里放x fruits[r];map.put(x, map.getOrDefault(x, 0) 1);//超过两种类型就清空一个篮子while(map.size() 2){y fruits[l];map.put(y, map.get(y) - 1);if(map.get(y) 0){map.remove(y);}}ans Math.max(ans, r - l 1);}return ans;}
}