IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 【第11天】给定一个字符串或数字,对它进行翻转输出 | 多样化操作 -> 正文阅读

[Java知识库]【第11天】给定一个字符串或数字,对它进行翻转输出 | 多样化操作

本文已收录于专栏
🌸《Java入门一百例》🌸

序、专栏前言

?? 本专栏开启,目的在于帮助大家更好的掌握学习Java,特别是一些Java学习者难以在网上找到系统地算法学习资料帮助自身入门算法,同时对于专栏内的内容有任何疑问都可在文章末尾添加我的微信给你进行一对一的讲解。
?? 但最最主要的还是需要独立思考,对于本专栏的所有内容,能够进行完全掌握,自己完完全全将代码写过一遍,对于算法入门肯定是没有问题的。
?? 算法的学习肯定不能缺少总结,这里我推荐大家可以到高校算法社区将学过的知识进行打卡,以此来进行巩固以及复习。
??学好算法的唯一途径那一定是题海战略,大量练习的堆积才能练就一身本领。专栏的任何题目我将会从【题目描述】【解题思路】【模板代码】【代码解析】等四板块进行讲解。

一、【例题1】

??给定多组测试数据,每次给定一个字符串 S S S,对你把它进行翻转后输出。

2、解题思路

??题目难度:??

??首先要清楚,在Java语言中,默认的字符串类似String是不可变的。所以我们考虑把它转化为字符数组char[]进行操作,或者使用可变的字符串类型StringBuilder进行操作。

3、模板代码

1、方法1

import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while (sc.hasNext()){
            char[] c=sc.next().toCharArray();
            int l=0;
            int r=c.length-1;
            while (l<r){
                char a=c[l];
                c[l]=c[r];
                c[r]=a;
                l++;
                r--;
            }
            String s=new String(c);
            System.out.println(s);
        }
    }
}

2、方法2

import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while (sc.hasNext()){
            String s=sc.next();
            int n=s.length();
            StringBuilder sb=new StringBuilder();
            for (int i = n-1; i >=0; i--) {
                sb.append(s.charAt(i));
            }
            System.out.println(sb);
        }
    }
}

3、方法3

import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while (sc.hasNext()){
            String s=sc.next();
            StringBuilder sb=new StringBuilder(s);
            sb.reverse();
            System.out.println(sb);
        }
    }
}

4 、代码解析

  • ( 1 ) (1) (1)方法 1 1 1中,我们将字符串转化字符数组char[]操作,使用双指针算法两两交换头尾的字符,最终完成操作。第16行代码中String有一个构造方法可以传入一个char[]拼接成字符串,但是这个方式太麻烦不推荐大家使用。
  • ( 2 ) (2) (2)方法 2 2 2中我们使用一个空的StringBuilder接受答案,只需要把原有的String倒着遍历一遍加入到StringBuilder即可,最后进行输出。
  • ( 3 ) (3) (3)StringBuilder自带有reverse翻转函数,它也有一个构造方法可以接收String为参数。我们只需要调用reverse进行翻转即可。这才是我们常使用的方式。

二、【例题2】

??给定多组测试数据,每次给定一个整数 x x x。请你对它进行翻转输出,题目保证翻转的结果不会超出了int的取值范围。

2、解题思路

??题目难度:????

??这道题我们应该注意到负数的情况,因为如果直接转化为字符串使用reverse是会出问题的。我们可以考虑通过利用取余%操作来完成。

3、模板代码

import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while (sc.hasNext()){
            int x=sc.nextInt();
            int res=0;
            while (x!=0){
                int b=x%10;
                x/=10;
                res=res*10+b;
            }
            System.out.println(res);
        }
    }
}

4 、代码解析

  • ( 1 ) (1) (1)我们取余%,是每次取出x的最低位数,然后加在res的后面,每次要加之前都得先乘以10,整体向左移动一位再加入,这样得到的整数和原数组就是相反的。
  • ( 2 ) (2) (2)为什么能解决负数的情况呢?因为负数取模得到的数也会是负数。比如-123,取模一次得到的并不是3,而是-3。然后接着是-2-1
    这样得到的数通过我们的运算得到的是:
    ( ? 3 ) × 100 + ( ? 2 ) × 10 + ( ? 1 ) = ? 321 (-3)×100+(-2)×10+(-1)=-321 (?3)×100+(?2)×10+(?1)=?321
    -321正好就是-123翻转后的结果,如果使用reverse得到的结果就会是321-
    在这里插入图片描述

三、推荐专栏

🌌《零基础学算法100天》🌌

四、课后习题

序号题目链接难度评级
1反转字符串1
2反转字符串 II1
3仅仅反转字母2
4反转单词前缀2
5整数反转3
👇 学习有疑问?👇
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-06-03 23:53:36  更:2022-06-03 23:54:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:50:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码