当前位置: 首页 > wzjs >正文

黄岩网站开发哪个网站做电商门槛最低

黄岩网站开发,哪个网站做电商门槛最低,品牌设计课程,北京seo招聘网文章目录 直接刷题链接直达无重复字符的最长子串给定一个数,删除K位得到最小值至多包含 K 个不同字符的最长子串字符串的排列至少有K个重复字符的最长子串 直接刷题链接直达 如何找出一个字符串中的最大不重复子串 3. 无重复字符的最长子串 给定一个数&#xff0…

文章目录

  • 直接刷题链接直达
  • 无重复字符的最长子串
  • 给定一个数,删除K位得到最小值
  • 至多包含 K 个不同字符的最长子串
  • 字符串的排列
  • 至少有K个重复字符的最长子串


直接刷题链接直达

  1. 如何找出一个字符串中的最大不重复子串
  • 3. 无重复字符的最长子串
  1. 给定一个数,删除K位得到最小值
  • 402. 移掉K位数字
  1. 至多包含 K 个不同字符的最长子串
  • 340. 至多包含 K 个不同字符的最长子串
  1. 字符串的排列
  • 面试题38. 字符串的排列
  • 46. 全排列 (相同思路)
  1. 至少有K个重复字符的最长子串
  • 395. 至少有K个重复字符的最长子串

无重复字符的最长子串

题目: 给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。

思路:

  • 滑动窗口 + 哈希表(Map) 解决问题

  • start 只向前移动【start = Math.max(start, map.get(ch) + 1)】,保证 O(n) 复杂度

  • 考虑边界情况(例如 “”, “bbbbb”, “abcd”)

import java.util.HashMap;
import java.util.Map;class Solution {public int lengthOfLongestSubstring(String s) {Map<Character, Integer> map = new HashMap<>(); // 存储字符和索引int maxLen = 0;int start = 0; // 滑动窗口左边界for (int i = 0; i < s.length(); i++) {char ch = s.charAt(i);// 如果字符重复,移动左边界(要取 `Math.max` 以保证 `start` 只向前移动)if (map.containsKey(ch)) {start = Math.max(start, map.get(ch) + 1);}// 更新最大长度maxLen = Math.max(maxLen, i - start + 1);// 记录当前字符的索引map.put(ch, i);}return maxLen;}
}

给定一个数,删除K位得到最小值

给你一个以字符串表示的非负整数 num 和一个整数 k ,移除这个数中的 k 位数字,使得剩下的数字最小。请你以字符串形式返回这个最小的数字。

关键点:

  • 局部最优选择 -> 全局最优:
    尽量让前面的数字小,所以 遇到递增序列时,删除较大的数字。
  • 使用单调栈:
    维护一个单调递增的栈,遇到比栈顶小的数字,就移除栈顶(减少较大的数字)。
  • 去除前导 0:
    处理 000123 这样的情况,返回 “123” 而不是 “000123”。

思路:
使用 Stack<Character> 模拟递增序列,遍历 num:

  • 遇到比栈顶小的数字,就移除栈顶(最多 k 次)。

  • 所有数字入栈后,如果 k > 0,继续从栈顶移除剩余 k 个数字。

  • 去除前导 0,避免 “000123” 这种情况。

import java.util.Stack;
class Solution {public String removeKdigits(String num, int k) {// 单调栈// (小->大)进栈,保持栈递增 高位越小越好if (num == null || num.length() <= k) return "0";Stack<Integer> stack = new Stack<>();for (int i = 0; i < num.length(); i++) {char ch = num.charAt(i);while (!stack.isEmpty() && k>0 && ch < num.charAt(stack.peek())) {stack.pop();k--;}stack.push(i);} while ( k>0) {stack.pop();k--;}// 去掉前导0StringBuilder sb = new StringBuilder();while(!stack.isEmpty()) {sb.append(num.charAt(stack.pop()));}sb.reverse();while(!sb.isEmpty() && sb.charAt(0) == '0') {sb.deleteCharAt(0);}return sb.isEmpty() ? "0":sb.toString();}
}

至多包含 K 个不同字符的最长子串

题目描述 :给定一个字符串 s 和一个整数 k,找出 最多包含 k 个不同字符 的 最长子串 的长度。

解法: 滑动窗口 + 哈希表
核心思路:

  • 维护一个滑动窗口 [left, right],窗口内的子串最多包含 k 个不同字符。

  • 用 HashMap<Character, Integer> 统计窗口内字符出现的次数:

  • 当窗口内 字符种类 ≤ k:扩大窗口 right++。

  • 当窗口内 字符种类 > k:缩小窗口 left++,直到字符种类恢复到 k。

  • 记录窗口的最大长度。

import java.util.HashMap;
import java.util.Map;class Solution {public int lengthOfLongestSubstringKDistinct(String s, int k) {if (s.length() == 0 || k == 0) return 0;Map<Character, Integer> freqMap = new HashMap<>();int left = 0, maxLen = 0;for (int right = 0; right < s.length(); right++) {char ch = s.charAt(right);freqMap.put(ch, freqMap.getOrDefault(ch, 0) + 1);// 当窗口内的不同字符数超过 k,收缩左指针while (freqMap.size() > k) {char leftChar = s.charAt(left);freqMap.put(leftChar, freqMap.get(leftChar) - 1);if (freqMap.get(leftChar) == 0) {freqMap.remove(leftChar);}left++; // 缩小窗口}// 更新最大长度maxLen = Math.max(maxLen, right - left + 1);}return maxLen;}
}

字符串的排列

题目: 某店铺将用于组成套餐的商品记作字符串 goods,其中 goods[i] 表示对应商品。请返回该套餐内所含商品的 全部排列方式 。

返回结果 无顺序要求,但不能含有重复的元素。

class Solution {Set<String> ans = new HashSet<>();public String[] goodsOrder(String goods) {dfs(goods, new boolean[goods.length()], new StringBuilder());return ans.toArray(new String[0]);   }public void dfs(String goods, boolean[] used,StringBuilder res) {// 终止if (res.length() == goods.length()) {ans.add(res.toString());return;}//遍历for (int i = 0; i < goods.length(); i++) {if (!used[i]) {used[i] = true;res.append(goods.charAt(i));dfs(goods, used, res);// 回溯used[i] = false;res.deleteCharAt(res.length() - 1);}}}}

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

class Solution {Set<List<Integer>> ans = new HashSet<>();public List<List<Integer>> permute(int[] nums) {dfs(new ArrayList<>(), nums, new boolean[nums.length]);return new ArrayList<>(ans);}public void dfs(List<Integer> path, int[] nums, boolean[] used) {if (path.size() == nums.length) {ans.add(new ArrayList(path));return;}for (int i = 0; i < nums.length; i++) {if (!used[i]) {used[i] = true;path.add(nums[i]);dfs(path, nums, used);used[i] = false;path.remove(path.size() -1);}}}}

至少有K个重复字符的最长子串

题目: 给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于 k 。返回这一子串的长度。

如果不存在这样的子字符串,则返回 0。

思路:

  • 统计每个字符的频率

  • 找到第一个不符合 k 的字符 ch

  • 说明 以 ch 为中心切割,这个 ch 一定不会出现在最终结果中。

  • 递归求解 ch 左边的子串和 ch 右边的子串,取最大值。

class Solution {public int longestSubstring(String s, int k) {// 找出 不符合 的字符// 双指针 剔除Map<Character, Integer> map = new HashMap<>();for (int i = 0; i < s.length(); i++) {char ch = s.charAt(i);map.put(ch, map.getOrDefault(ch, 0) +1);}for (char ch : s.toCharArray()) {//找到第一个不符合 `k` 的字符if (map.get(ch) < k) {int maxLen = 0;// 以这个字符 `ch` 为分割点,递归求左右子串for (String sp : s.split(String.valueOf(ch))) {maxLen = Math.max(maxLen, longestSubstring(sp, k));}return maxLen;}}//如果所有字符都符合 k,返回整个字符串长度return s.length();}
}


文章转载自:

http://aLzQ6Vga.snygg.cn
http://QO394oaZ.snygg.cn
http://6LJYujhj.snygg.cn
http://4Bj1CoNv.snygg.cn
http://C7LMA5qr.snygg.cn
http://LJsFV8CS.snygg.cn
http://okiKnCH9.snygg.cn
http://JZT3KODE.snygg.cn
http://wBSFRH1J.snygg.cn
http://SuKNtm2Z.snygg.cn
http://zg6h99mC.snygg.cn
http://JiUgMz4K.snygg.cn
http://9xoRWKqS.snygg.cn
http://NllPKMv9.snygg.cn
http://yTbq69Q9.snygg.cn
http://6mjQfFXw.snygg.cn
http://7Ouc9OAO.snygg.cn
http://XpJyP36t.snygg.cn
http://KEH5k6ts.snygg.cn
http://xaMHaCEE.snygg.cn
http://YF8vj5pa.snygg.cn
http://qSe2eF1I.snygg.cn
http://YRemPMw2.snygg.cn
http://9yoRNDJT.snygg.cn
http://TTfqiZce.snygg.cn
http://6Yjlu1qV.snygg.cn
http://vnpgoZqk.snygg.cn
http://h5k3gYxc.snygg.cn
http://Ce6QNwLg.snygg.cn
http://wB0fpqGX.snygg.cn
http://www.dtcms.com/wzjs/773367.html

相关文章:

  • 阿里云投数亿资源扶持中小网站迁移服务器企业网易邮箱登录入口官网
  • 百度网盘搜索百度seo如何做
  • 怎样投网站广告龙岗营销网站建设
  • 网站开发需要几个人seo关键词优化排名软件
  • 浙江省互联网建设网站资阳seo优化公司
  • 网站建设报价网站建设报价单网页制作培训心得
  • 外贸人常用网站wordpress 列表图片
  • 怎么做网站页面免费的两个WordPress内容同步
  • 信息网站建设方案搭建网站 软件
  • 杭州设计师网站企业管理咨询网站模板
  • 网站开发与应用 答案色调网站
  • 如何把网站上传到网上c 网站开发 书
  • 可以用来展示的网站青柠视频免费版中文字幕
  • 推广网站的形式包括深圳婚纱摄影网站建设
  • 免费做外贸网站软件外包合同模板
  • 哪个网站跨境电商做的最好网络科技有限公司注册资金最低
  • 网站宣传活动怎么做免费虚拟机
  • 小学学校网站wordpress flv
  • 网站模板 psd1万流量网站 服务器配置
  • 做响应式网站一般都用哪些框架重庆建设行业信息网站
  • 邢台做网站推广费用开一家广告公司需要多少钱
  • 建设行业网站大概需要都少钱网站设计与制作说明书
  • 站长工具网站提交濮阳做网站的公司有哪些
  • 网站80端口备案北辰网站建设
  • 凡科网建站模板手机软件应用市场
  • 织梦商城网站模板免费下载湖南网站建设设计
  • 重庆价格低建设网站公司网上买保险有哪些平台
  • 云主机 怎么做网站怎么自己制作网页
  • 提供信息门户网站搭建海口网站建设网站制作
  • 灵璧有做公司网站的吗兰州落地防疫