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

30分钟算法题完成

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;public class test_04_25 {//翻转字符串里的单词//  hello worldpublic static String reverseWords(String s){int i=0;int j=0;List<String> res = new ArrayList<>();while (j<s.length()){//将头部的空字符串跳过i = skipSpace(s, i);j=i;if (j>=s.length()){break;}while (j<s.length()&&s.charAt(j)!=' '){j++;}res.add(s.substring(i,j));i=j;}Collections.reverse(res);String myRes = "";for (int p=0;p<res.size();p++){if (p!=0){myRes = myRes +" "+res.get(p);}else{myRes = myRes+res.get(p);}}return myRes;}public static int skipSpace(String s, int i) {while (i<s.length()&&s.charAt(i)==' '){i++;}return i;}//[1,2,3]//子集-获取子集public List<List<Integer>> subsets(int[] nums){//总共的情况数int n = (int) Math.pow(2,nums.length);List<List<Integer>> res = new ArrayList<>();for (int i=0;i<n;i++){List<Integer> ls = new ArrayList<>();for (int j=0;j<nums.length;j++){if (((i>>j)&1)==1){ls.add(nums[j]);}}res.add(ls);}return res;}//字符串相乘//num1 = "123", num2 = "456"public static String multiply(String num1, String num2){List<String> ls = new ArrayList<>();String m = "";for (int i=num1.length()-1;i>=0;i--){ls.add(multiplyString(num1.charAt(i),num2)+m);m = m+"0";}String res="0";for (int i=0;i<ls.size();i++){res = addString(res,ls.get(i));}int pos=0;for (;pos<res.length();pos++){if (res.charAt(pos)=='0'){pos++;}else{break;}}if (pos>=res.length()){return "0";}else{return res.substring(pos);}}public static String multiplyString(char c, String num2) {int k=0;StringBuilder stringBuilder = new StringBuilder();for (int i=num2.length()-1;i>=0;i--){int res = ((c - 48) * (num2.charAt(i) - 48) + k);k = res/10;stringBuilder.append(res%10);}if (k!=0){stringBuilder.append(k);}stringBuilder.reverse();return stringBuilder.toString();}//字符串相加public static String addString(String num1, String num2){int i=num1.length()-1;int k=0;int j=num2.length()-1;StringBuilder stringBuilder = new StringBuilder();while (i>=0&&j>=0){int res = num1.charAt(i)+num2.charAt(j)-48-48+k;k = res/10;stringBuilder.append(res%10);i--;j--;}while (i>=0){int res = num1.charAt(i)-48+k;k = res/10;stringBuilder.append(res%10);i--;}while (j>=0){int res = num2.charAt(j)-48+k;k=res/10;stringBuilder.append(res%10);j--;}if (k!=0){stringBuilder.append(k);}stringBuilder.reverse();return stringBuilder.toString();}//最长有效括号//")()())"public static int longestValidParentheses(String s) {//")()())"//")(())"int n = s.length();//dp[i]表示截至i的最长有效括号int[] dp = new int[n+1];int max=0;for (int i=1;i<n;i++){if (s.charAt(i)=='('){dp[i]=0;}else{if (s.charAt(i-1)=='('){if (i>=2){dp[i]=dp[i-2]+2;}else{dp[i]=2;}}else{//(())int index = i-dp[i-1]-1;if (index>=0){if (s.charAt(index)=='('){System.out.println(i+"-"+index);dp[i]=dp[i-1]+2+dp[index]+dp[index-1>=0?index-1:n];}else{dp[i]=0;}}else{dp[i]=0;}}}max=Math.max(max,dp[i]);}return max;}public static void main(String[] args) {int i = longestValidParentheses("(()");System.out.println(i);}}
http://www.xdnf.cn/news/145153.html

相关文章:

  • Node.js 开发项目
  • [吾爱出品] 【键鼠自动化工具】支持识别窗口、识图、发送文本、按键组合等
  • go:无刷新前后端交互设计
  • 九、小白如何用Pygame制作一款跑酷类游戏(添加前进小动物作为动态障碍物)
  • 【含文档+PPT+源码】基于微信小程序连锁药店商城
  • 永久缓存 Git 凭证
  • 【playwright】 page.wait_for_timeout() 和time.sleep()区别
  • Unity | AmplifyShaderEditor插件基础(第三集:颜色的计算)
  • 驱动开发硬核特训 · Day 19:字符设备驱动实战(控制 LED)
  • MP自动填充之MetaObjectHandler核心方法解析
  • MATLAB技巧——平滑滤波,给出一定的例程和输出参考
  • openGauss手工配置主备
  • Java大师成长计划之第3天:Java中的异常处理机制
  • 神经网络基础[损失函数,bp算法,梯度下降算法 ]
  • Linux 内核网络协议栈中 inet_stream_ops 与 tcp_prot 的深度解析
  • 搜索一个冷门搜索不到可以搜索专栏
  • 回归测试:保障软件质量的重要防线
  • A Comprehensive Survey of Spoken Language Models
  • 《AI大模型趣味实战》构建基于Flask和Ollama的AI助手聊天网站:分布式架构与ngrok内网穿透实现
  • 什么是测试驱动开发(TDD)?
  • C# 综合示例 库存管理系统7 主界面(FormMain)
  • 38 python random
  • 唯创安全:从传统到智能,工厂智能叉车AI防撞系统解决方案
  • 什么是非关系型数据库
  • 如何避免IDEA每次打开新项目都重复配置Maven?
  • 【交互式数据仪表板】Plotly Dash完全指南:从零搭建到部署全流程 | Python数据可视化必备
  • CSS Position 属性完全指南
  • 02.05、链表求和
  • 10前端项目----商品详情页/滚轮行为
  • 第七章.干货干货!!!Langchain4j开发智能体-文生图文生视频