news 2026/5/8 13:45:51

字符串的算法练习

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
字符串的算法练习

字符串的算法练习

前言:本文的算法练习来自黑马程序员的黑马程序员2026版AI+Java零基础全套视频课程

文章目录

  • 字符串的算法练习
    • 1.字符串分离
      • 先打印再补零
      • 先补零再打印
        • 两种写法的对比
    • 2.打乱字符串
    • 3.字符串计算

1.字符串分离

要求:键盘录入任意字符串,请按长度为 8 拆分每个输入字符串并进行输出

长度不是 8 整数倍的字符串请在后面补数字 0,空字符串不处理。

举例:

输入:abcdabcda

输出:第一行:abcdabcd

第二行:a0000000

先打印再补零

importjava.util.Scanner;publicclasstest{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);System.out.println("请输入字符串");//获取字符串Stringstr=sc.next();//打印每一个字符,然后遇到8就换行//System.out.println()运行后会换行//System.out.print()运行后不会换行for(inti=0;i<str.length();i++){//获取具体位置的字符打印charc=str.charAt(i);System.out.print(c);if((i+1)%8==0){System.out.println();}}//计算最后一行的字符数intlastLineCount=str.length()%8;//计算需要补的零数intcount=8-lastLineCount;//打印0for(inti=0;i<count;i++){System.out.print("0");}}}

先补零再打印

importjava.util.Scanner;publicclasstest2{publicstaticvoidmain(String[]args){//1.获取字符串System.out.println("请输入字符串");Scannersc=newScanner(System.in);Stringstr=sc.next();//2.获取需要补的0的数intlastLineCount=str.length()%8;intcount=8-lastLineCount;Strings="00000000".substring(0,count);str=str+s;//3.打印字符串for(inti=0;i<str.length();i+=8){Stringres=str.substring(i,i+8);System.out.println(res);}}}
两种写法的对比

第一种只用一个字符串就能实现打印,但是是每一次循环打印一个字符,还要手动再次换行。

第二种用了substring(begin,end)方法,是左取右不取的方法,在打印字符串的时候可以一次性打印出8个字符,并且换行。但是第二种方法需要用到3个字符串来完成。

不过二次开发的时候,比如要把8个一行换成11个一行,第一种解法只用改变几个数字,重新算一下要补的零的个数,而第二种不仅要重新算个数,还要修改"00000000"的字符串。

2.打乱字符串

要求:通过键盘输入字符串,然后打乱顺序,再打印

importjava.util.Random;importjava.util.Scanner;publicclasstest3{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);Randomr=newRandom();System.out.println("请输入字符串:");Stringstr=sc.next();//因为字符串是不能改变的,所以将字符串转为字符数组char[]ch=str.toCharArray();//防止重复字符串的出现booleanflag=true;while(flag){for(inti=0;i<ch.length;i++){//随机生成索引,交换数值intrandomIndex=r.nextInt(ch.length);chartemp=ch[randomIndex];ch[randomIndex]=ch[i];ch[i]=temp;}//将字符数组转换回字符串Stringres=newString(ch);//判断字符串是否重复,不重复就置标志位为false,然后退出循环if(!res.equals(str)){flag=false;System.out.println(res);}}}}

黑马程序员给的代码是没有增加字符串重复检查的,这里加了字符串的重复检查就能避免打印出来的不和原本的重复。

3.字符串计算

定义两个字符串,记录为非负整数,求它们的和。 输入: “12395” 和 “133” , 输出: “12528”

注意: 需要数据过大, 超出int取值范围的情况

代码如下

packageAPI_06;publicclasstest4{publicstaticvoidmain(String[]args){//1.创建两个字符串Stringstr1="12359";Stringstr2="133";//2.获取最长字符串数intlen=str1.length()>=str2.length()?str1.length():str2.length();//3.将字符串转化为整型数组int[]arr1=copydata(len,str1);int[]arr2=copydata(len,str2);//4.计算int[]sum=newint[len+1];//进位计算器intnum=0;for(inti=arr1.length-1;i>=0;i--){//将同位的计算结果记录起来inttemp=arr1[i]+arr2[i]+num;//取余来计算此位的数sum[i+1]=temp%10;//取整来计算进位num=temp/10;}//最后要考虑第一位sum[0]=num;StringBuildersb=newStringBuilder();//如果第一位是0则不打印if(sum[0]!=0){sb.append(sum[0]);}for(inti=1;i<sum.length;i++){sb.append(sum[i]);}System.out.println(sb);}publicstaticint[]copydata(intlen,Stringstr){//创建整型数组容器int[]arr=newint[len];//index来记录索引,从后往前intindex=arr.length-1;for(inti=str.length()-1;i>=0;i--){//取每一位的字符charc=str.charAt(i);//通过ASCLL码计算intnum=c-48;arr[index]=num;index--;}returnarr;}}

um = c-48;
arr[index] = num;
index–;
}
return arr;
}
}

[外链图片转存中...(img-RQnwRM1a-1778163090564)] [外链图片转存中...(img-ORdzJe8i-1778163090565)] copydata中的逻辑
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/8 13:45:23

工业电源模块选型参考:钡特电源 AD60-23S24 与 LD60-23B24R2 封装兼容解析

工业控制、智能仪表及电力设备等领域&#xff0c;60W 功率级 AC-DC 模块电源因高集成度、小体积的特性&#xff0c;成为硬件工程师与研发工程师选型的核心品类。广州钡源专注于高品质标准工业模块电源&#xff0c;旗下钡特电源 AD60-23S24 作为该功率段的代表性产品&#xff0c…

作者头像 李华
网站建设 2026/5/8 13:44:01

开源知识竞赛系统 vs 商业软件

&#x1f19a; 开源知识竞赛系统 vs 商业软件哪个更适合你&#xff1f;&#x1f4cc; 引言&#xff1a;选择的十字路口无论是学校、企业培训&#xff0c;还是大型公众活动&#xff0c;知识竞赛都是一种有效的互动与评估方式。面对市场上众多的选择&#xff0c;决策者常常在免费…

作者头像 李华
网站建设 2026/5/8 13:43:58

终极指南:如何让旧游戏手柄在现代游戏中重获新生

终极指南&#xff1a;如何让旧游戏手柄在现代游戏中重获新生 【免费下载链接】XOutput A small DirectInput to Xinput wrapper 项目地址: https://gitcode.com/gh_mirrors/xou/XOutput 你是否曾经因为心爱的旧游戏手柄无法在现代游戏中使用而感到沮丧&#xff1f;XOutp…

作者头像 李华
网站建设 2026/5/8 13:32:40

RPG Maker游戏资源解密:3步解锁加密素材的完整指南

RPG Maker游戏资源解密&#xff1a;3步解锁加密素材的完整指南 【免费下载链接】RPG-Maker-MV-Decrypter You can decrypt RPG-Maker-MV Resource Files with this project ~ If you dont wanna download it, you can use the Script on my HP: 项目地址: https://gitcode.co…

作者头像 李华