Java练习(第4天)【总结】反转字符串的9种不同实现方法

news2025/2/25 15:52:23

一、问题描述

给定一个字符串,输出反转后的字符串。

样例输入1: abc
样例输出1: cba

样例输入2: GeeksforGeeks
样例输出2: skeeGrofskeeG

二、Java实现(九个程序)

1、实现1

思想: 逐个取 + 倒序拼

Java代码:

import java.io.*;
import java.util.Scanner;
public class Method_1
{
    public static void main(String args[])
	 {
	 		String str = "Geeks", nstr = "";
			char ch;
			System.out.print("Original word: ");
			System.out.println(str);
			
			for(int i = 0;i < str.length();i ++)
			{
					ch = str.charAt(i);
					nstr = ch + nstr;
			}
			
			System.out.println("Reversed word: " + nstr);   
    }
}

样例输出:

在这里插入图片描述

2、实现2

思想: 转字节串倒序输出

Java代码:

import java.lang.*;
import java.io.*;
import java.util.*;

public class Method_2
{
    public static void main(String args[])
	 {
	 		String input = "GeeksforGeeks";
			byte [] strAsByteArray = input.getBytes();
			byte [] result = new byte[strAsByteArray.length];
			
			for (int i = 0;i < strAsByteArray.length;i ++)
			{
					result[i] = strAsByteArray[strAsByteArray.length - i - 1];
			}
			System.out.println("original string: " + input);
			System.out.println("original converted byte string: " + strAsByteArray);
			System.out.println("reversed byte string: " + result);
			System.out.println("reversed string: " + new String(result));
    }
}

样例输出:

在这里插入图片描述

3、实现3

思想: 使用StringBuilder类内置的reverse()方法

Java代码:

import java.lang.*;
import java.io.*;
import java.util.*;

public class Method_3
{
	   public static void main(String args[])
	   {
	   		String input = "Geeks for Geeks";
			   StringBuilder input1 = new StringBuilder();
			   input1.append(input);
			   input1.reverse();
			   
			   System.out.println("Original String: " + input);
			   System.out.println("Reversed String: " + input1);
    }
}

样例输出:

在这里插入图片描述

4、实现4

思想: 转字符数组CharArray前后倒转Swap

Java代码:

import java.lang.*;
import java.io.*;
import java.util.*;

public class Method_4
{
    public static void main(String args[])
	 {
	 		String input = "Geeks for Geeks";
			char [] temparray = input.toCharArray();
			int left, right = 0;
			right = temparray.length - 1;
			for(left = 0;left < right;left ++, right --)
			{
					char temp = temparray[left];
					temparray[left] = temparray[right];
					temparray[right] = temp;
			}
			System.out.println("Original string: " + input);
			System.out.print("Reversed string: ");
			for (char c : temparray)
			{
					System.out.print(c);
			}
			System.out.println();
    }
}

样例输出:

在这里插入图片描述

5、实现5

思想(类似实现4): 转字符数组CharArray逆序输出

Java代码:

import java.lang.*;
import java.io.*;
import java.util.*;

public class Method_5
{
    public static void main(String args[])
	 {
	 		String input = "GeeksForGeeks";
			char [] try1 = input.toCharArray();
			System.out.println("Original string: " + input);
			System.out.print("Reversed string: ");
			for (int i = try1.length - 1; i >= 0;i --)
			{
					System.out.print(try1[i]);
			}
    }
}

样例输出:

在这里插入图片描述

6、实现6

思想: 使用ArrayList对象ListIterator迭代变量

Java代码:

import java.lang.*;
import java.io.*;
import java.util.*;

public class Method_6
{
    public static void main(String args[])
	 {
	 		String input = "Geeks for Geeks";
			char [] hello = input.toCharArray();
			List<Character> trial1 = new ArrayList<>();
			for (char c : hello)
			{
					trial1.add(c);
			}
			Collections.reverse(trial1);
	 		ListIterator Li = trial1.listIterator();
			 
			System.out.println("Original string: " + input);
			System.out.print("Reversed string: ");
			while (Li.hasNext())
			{
					System.out.print(Li.next());
			}
    }
}

样例输出:

在这里插入图片描述

7、实现7

思想: 使用StringBuffer类内置的reverse()方法

Java代码:

import java.lang.*;
import java.io.*;
import java.util.*;

public class Method_7
{
    public static void main(String args[])
	 {
	 		String str = "GeeksforGeeks";
			StringBuffer sbr = new StringBuffer(str);
			sbr.reverse();
			
			System.out.println("Original string: " + str);
			System.out.println("Reversed string: " + sbr);     
    }
}

样例输出:

在这里插入图片描述

8、实现8

思想(类似实现4): 转字符数组不同之处:读取用户输入

Java代码:

import java.io.*;
import java.util.Scanner;

public class Method_8
{
    public static void main(String args[])
	 {
	 		Scanner scanner = new Scanner(System.in);
			String Str = scanner.nextLine();
			char [] arr = Str.toCharArray();
			String rev = "";
			
			for (int i = Str.length() - 1;i >= 0;i --)
			{
					rev = rev + Str.charAt(i);
			}
			
			System.out.println("Original string: " + Str);
			System.out.println("Reversed string: " + rev);
    }
}

样例输入:

在这里插入图片描述

样例输出:

在这里插入图片描述

9、实现9

思想: 使用堆栈的LIFO(Last-in First-out,后入先出)性质

java代码:

import java.util.*;

public class Method_9
{
    public static void main(String args[])
	 {
	 		String s = "Geeks for Geeks";
			
			Stack<Character> stack = new Stack<>();
			
			for (char c : s.toCharArray())
			{
					stack.push(c);
			}
			String temp = "";
			while (! stack.isEmpty())
			{
					temp += stack.pop();
			}
			
			System.out.println("Original string: " + s);
			System.out.println("Reversed string: " + temp);
    }
}

样例输出:

在这里插入图片描述

参考

Geeks for Geeks.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1473725.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

测试开发(6)软件测试教程——自动化测试selenium(自动化测试介绍、如何实施、Selenium介绍 、Selenium相关的API)

接上次博客&#xff1a;测试开发&#xff08;5&#xff09;测试分类标准 &#xff1a;按测试对像划分、按是否查看代码划分、按开发阶段划分、按测试实施组织、按是否运行划分、按是否手工划分、按测试地域划分-CSDN博客 目录​​​​​​​ 什么是自动化测试 自动化测试介绍…

【Unity自制手册】Unity—Camera相机跟随的方法大全

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

微信小程序蓝牙通信HC08

总结这两天研究的蓝牙串口。人话版资料不多&#xff0c;主要靠翻别人的仓库和文档。 单片机部分&#xff0c;与蓝牙串口通信是通过串口。比我想的要简单&#xff0c;小程序部分&#xff0c;有非常多的服务和特征&#xff0c;而且人话版资料不多。 如果本文有什么问题&#xf…

C# 水排序 微信小游戏

来只 水排序谜题启发式搜索方法_水排序解法小程序-CSDN博客 大神的C语言转换成C# 语言&#xff0c;更多的请看原作者&#xff0c;这里直接贴C#代码 using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace ConsoleApp2 {class Pro…

再见,Visual Basic——曾经风靡一时的编程语言

2020年3月&#xff0c;微软团队宣布了对Visual Basic&#xff08;VB&#xff09;的“终审判决”&#xff1a;不再进行开发或增加新功能。这意味着曾经风光无限的VB正式退出了历史舞台。 VB是微软推出的首款可视化编程软件&#xff0c;自1991年问世以来&#xff0c;便受到了广大…

vue插件——vue-print-nb 实现打印功能

之前写过好多关于打印的功能&#xff0c;通过windowprint组合键来实现打印。 今天遇到一个需求&#xff0c;就是使用vue插件来实现打印功能。 最终效果图如下&#xff1a; 下面介绍解决步骤&#xff1a; 解决步骤1&#xff1a;安装vue-print-nb插件——npm install vue-p…

2024年,“智慧城市”到底是持续拉跨还是稳步向前?

2024年“智慧城市”的发展趋势&#xff0c;总体上来看&#xff0c;是稳步向前的。 随着科技的不断发展&#xff0c;特别是物联网、云计算、大数据、人工智能等技术的日益成熟和普及&#xff0c;智慧城市的建设有了更为坚实的基础。这些技术不仅可以帮助城市实现更高效、智能的…

智慧公厕让社区生活更美好

随着科技的迅猛发展&#xff0c;城市管理、城市服务均使用科技化的手段进行升级改造&#xff0c;社区生活更美好赋予全新的智慧效能&#xff0c;其中智慧公厕也成为了城市环卫设施的新宠。智慧公厕以物联网、互联网、大数据、云计算、5G通信、自动化控制等技术为核心&#xff0…

Leetcoder Day23| 回溯part03:组合+分割

语言&#xff1a;Java/Go 39. 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的所有不同组合 &#xff0c;并以列表形式返回。你可以按任意顺序返回这些组合。 candidates 中的同一个…

经典文献阅读之--Scale jump-aware pose graph...(尺度跳跃感知位姿图)

0. 简介 我们常说的位姿图松弛指的就是基于闭环检测的边进行位姿图优化。而位姿图松弛已成为SLAM中不可或缺的补充&#xff0c;能够在满足逐对相对变换约束的目标下&#xff0c;实现传感器参考帧的高效全局配准。这些约束可以通过增量运动估计或全局地点识别来给出。尽管后一种…

SpreadJS+vue3练手使用

SpreadJS的练手使用 // 首先在 package.json 这个文件里{"name": "app-admin","private": true,"version": "0.0.0","type": "module","scripts": {"dev": "vite",&quo…

el-submenu is-opened 展开/闭合;el-submenu is-opened保持一个子菜单的展开控制

写了个mes系统目录 点击子菜单展开后&#xff0c;上一级菜单没有默认关闭。主流后台管理系统大部分都是保持一个子菜单关闭状态、 问度娘无果后&#xff0c;查询官网&#xff0c;一个属性搞定。 unique-opened 是否只保持一个子菜单的展开 加在 <el-menu 组件上即可 完整代…

《品牌声量》开播啦!

11月7日&#xff0c;中国品牌人物高端访谈节目《品牌声量》将在中央新影老故事频道和央视频等平台陆续播出。 《品牌声量》栏目一档专注中国企业/行政区品牌建设的大型演播厅访谈节目。栏目以“汇聚品牌思想&#xff0c;提升品牌声量”为宗旨&#xff0c;采用“著名主持人权威…

平价护眼台灯推荐知乎,真人测评五大优质护眼台灯推荐

孩子的学习情况是父母最关心的话题之一&#xff0c;当然&#xff0c;孩子的学习环境也是十分重要的&#xff0c;只有保持明亮且舒适的光线环境才能让孩子获得高效率。因此护眼台灯的出现成为众多宝妈人群青睐的对象&#xff0c;都希望能借助它的力量来保护孩子的视力健康。然而…

python matplotlib-->柱形图

环境 python:python-3.12.0-amd64 包: matplotlib 3.8.2 #https://blog.csdn.net/aobulaien001/article/details/134611729 import pandas as pd import numpy as np import matplotlib.pyplot as plt import randomclass TestPltText():def __init__(self):super(TestPltTex…

Java 学习和实践笔记(22):package(包机制)、JDK常见的包、类的导入

前面学的类&#xff0c;每创建一个类&#xff0c;在电脑上就是创建了一个对应的类文件。而package 相当于文件夹对文件的管理作用。主要用于管理类、用于解决类的重名问题。这个含义很简单。因为实际的程序&#xff0c;类可能有成千上万个&#xff0c;这样就需要把不同功能的类…

国创证券:沪指止步八连阳 市场上涨核心逻辑未变

2月26日&#xff0c;商场全天震荡调整&#xff0c;三大指数均小幅跌落。到收盘&#xff0c;上证指数收盘报2977.02点&#xff0c;跌落0.93%&#xff0c;停步八连阳&#xff1b;深证成指报收9066.09点&#xff0c;跌落0.04%&#xff1b;创业板指报收1751.7点&#xff0c;跌落0.3…

一款.NET下 WPF UI框架介绍

WPF开源的UI框架有很多,如HandyControl、MahApps.Metro、Xceed Extended WPF Toolkit™、Modern UI for WPF (MUI)、Layui-WPF、MaterialDesignInXamlToolkit、等等,今天小编带大家认识一款比较常用的kaiyuanUI---WPF UI,这款ui框架美观现代化,用起来也超级方便, 界面展示…

Linux之定时任务①(实施必会!!!)

文章目录 常见脚本一、 什么是crond二、crond的使用场景一、apache服务器监控三、crond服务四、命令格式五、cron格式六、定时任务备份七、数据库定时备份八、使用shell脚本发送邮件 常见脚本 [rootlocalhost ~]# vim apacheSentry.sh#!/bin/bash # author: tt # description:…

IP 电话

1 IP 电话概述 IP 电话是在互联网上传送多媒体信息。 多个英文同义词&#xff1a; VoIP (Voice over IP) Internet Telephony VON (Voice On the Net) 1.1 狭义的和广义的 IP 电话 狭义的 IP 电话&#xff1a;指在 IP 网络上打电话。 广义的 IP 电话&#xff1a;不仅仅是…