当前位置: 首页 > 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);}}

相关文章:

  • 使用命令行加密混淆C#程序
  • python中的logging库详细解析
  • AI超级智能体教程(三)---程序调用AI大模型的四种方式(SpringAI+LangChain4j+SDK+HTTP)
  • 二项式分布html实验
  • Low Poly 风格 | 飞机飞行可视化系统
  • 【计算机视觉】CV实战- 深入解析基于HOG+SVM的行人检测系统:Pedestrian Detection
  • 深入解析Mlivus Cloud核心架构:rootcoord组件的最佳实践与调优指南
  • 防火墙技术深度解析:从包过滤到云原生防火墙的部署与实战
  • 软测面经(私)
  • API/SDK
  • 【金仓数据库征文】金仓数据库:开启未来技术脑洞,探索数据库无限可能
  • 【基于Qt的QQMusic项目演示第一章】从界面交互到核心功能实现
  • 基于HTML+CSS实现的动态导航引导页技术解析
  • 数字孪生:从概念到实践,重构未来产业的“虚拟镜像”
  • Java实现背景图片加自适应水印图片
  • Android 编译问题 prebuilts/clang/host/linux-x86
  • Node.js 包管理工具介绍
  • 彻底卸载Python
  • 深入了解Activiti工作流引擎:从基础到实战
  • github把自己的jar包发送到maven中央仓库
  • 美联合健康集团高管枪杀案嫌疑人对谋杀指控不认罪
  • 共话城市自然之美,“微观黄浦”自媒体网络大V沙龙首场活动举行
  • 去年立案侦办侵权假冒案件3.7万起,公安部公布13起案例
  • 远程控制、窃密、挖矿!我国境内捕获“银狐”木马病毒变种
  • 历史一刻,两个航天员乘组拍摄全家福
  • “两高”发布侵犯知产犯罪司法解释:降低部分犯罪入罪门槛