关于String的简单编程题

经典问题:String s1 = "abc" 与 String s2 = new String("abc")的区别 这是以前刚学Java那会经常被问到的问题,并且也会经常出现在面试中。这个问题不仅仅只局限于Java,可以适用于其他大部分语言,正好最近有个小朋友在学编程,特此整理一下。 String s1 = "abc" ; String s2 = new String("abc"); 首先,我们先看看以上两句分别做了什么? String s1 = “abc” 做了什么 在栈中创建了一个名为 s1 的变量... 阅读详情

一、将字符串反转

package string;

public class Reverse {

    public static void main(String[] args) {
        String s1 = "abc   defg wf";

        //用字符串转字符数组实现反转
        String s2 = "";
        char[] cs = s1.toCharArray();
        for (int i = cs.length - 1; i >= 0; i--) {
            s2 = s2 + cs[i];
        }
        System.out.println("方法一反转操作后为:" + s2);
        //利用StringBuffer的reverse()方法实现反转
        StringBuffer sb = new StringBuffer(s1);
        StringBuffer sb2 = sb.reverse();
        System.out.println("方法二反转操作后为:" + sb2);
        //利用倒序存储实现反转
        String s3=myReverse(s1);
        System.out.println("方法三反转操作后为:" + s3);


    }
    public static String myReverse(String str)  
    {  
        char[] arr = new char[str.length()];  
        int pos = str.length();  
        for (int x=0; x<str.length(); x++)  
        {  
            arr[x] = str.charAt(--pos);  
        }  
        str = String.copyValueOf(arr);  
        return str;  
    }  
}

输出:

方法一反转操作后为:fw gfed   cba
方法二反转操作后为:fw gfed   cba
方法三反转操作后为:fw gfed   cba

二、实现去字符串两端空格功能

package string;

public class Trime {
    public static void main(String[] args) {
        String str1 = "   dwwg dwg  wfg   ";
        //利用String类自己的方法去除两端空格
        String str2 = str1.trim();
        System.err.println("方法一"+str2);
        //自定义方法去除两端空格
        String str3=myTrim(str1);
        System.err.println("方法二"+str3);

    }

    public static String myTrim(String str) {
        int start = 0, end = str.length() - 1;
        while (start <= end && str.charAt(start) == ' ')
            start++;
        while (start <= end && str.charAt(end) == ' ')
            end--;
        return str.substring(start, end + 1);
    }
}

输出:

方法一dwwg dwg  wfg
方法二dwwg dwg  wfg

三、获取一个字符串在另一个字符串中出现的次数,并返回出现起始索引

package string;

public class GetCount {

    public static void main(String[] args) {
        String str = "sshelloworldhellojavahellojsp";
        System.out.println("count=" + getSubCount(str, "hello"));
    }


    public static int getSubCount(String str, String key) {
        int count = 0;
        int index = 0;
        while ((index = str.indexOf(key, index)) != -1) {
            System.out.println("index=" + index);
            index = index + key.length();
            count++;
        }
        return count;
    }

}
index=2
index=12
index=21
count=3

indexOf返回的是长字符串中所求子字符串起始处索引值,没有则返回-1.

四、将一段英文句子倒序输出

package string;
import java.util.Scanner;

public class Reverse02 {
    public static String reverseWords(String sentence) {

        StringBuilder sb = new StringBuilder(sentence.length() + 1);
        String[] words = sentence.split(" ");
        for (int i = words.length - 1; i >= 0; i--) {
            sb.append(words[i]).append(' ');
        }
        sb.setLength(sb.length() - 1);
        return sb.toString();
    }

    public static void main(String[] args)

    {
        Scanner in = new Scanner(System.in);
        // 存放输入的字符串
        System.out.println("输入测试用例数目n:");
        String[] input = new String[in.nextInt()];
        in.nextLine();

        for (int i = 0; i < input.length; i++) {
            input[i] = in.nextLine();
        }
        // 输出倒序后的英文字符串
        System.out.println("输出为:");
        for (String s : input) {
            System.out.println(reverseWords(s));
        }
    }
}
输入测试用例数目n:
2
hello world!
i love you?
输出为:
world! hello
you? love i

四、删除一个字符串中出现最多的字符

package string;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class DelMost {
    public static void main(String[] args) {
        String str = "aassdfscfw";
        Map<Character, Integer> map = new HashMap<Character, Integer>();
        char[] box = str.toCharArray();
        for (char ch : box) {
            Integer i = map.get(ch);
            if (i == null) {
                map.put(ch, 1);
            } else {
                map.put(ch, i + 1);
            }
        } // 创建map键值对

        Integer max = 0;
        Set<Character> set = map.keySet();
        for (Character key : set) {
            Integer j = map.get(key);
            if (max < j) {
                max = j;
            }
        } // 将最大次数传给max

        for (Character key : set) {
            if (map.get(key) == max) {
                str = str.replaceAll(key.toString(), "");
            }
        }
        System.out.println(str);

    }
}
aadfcfw

五、输入一行字符分别统计英文字母、数字、空格个数。

package string;

import java.util.Scanner;

public class Tongji {
    public static void main(String[] args) {
        int eng=0,num=0,kong=0,elsel=0;
        Scanner sc=new Scanner(System.in);
        String str=sc.nextLine();
        char[] ch=null;
        ch=str.toCharArray();
        for(char c:ch){
            if(c>='0'&&c<='9'){
                num++;
            }else if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){
                eng++;
            }else if(c==' '){
                kong++;
            }else{
            elsel++;
            }
        }
        System.out.println("字母有"+eng);
        System.out.println("数字有"+num);
        System.out.println("空格有"+kong);
        System.out.println("其他"+elsel);
    }
}
hello world 378nihao
字母有15
数字有3
空格有2
其他0
编程题——超长正整数相加 编程题——超长正整数相加 题目描述: 请设计一个算法完成两个超长正整数的加法。 输入描述: 输入两个字符串数字 输出描述: 输出相加后的结果,string型 示例: 输入 99999999999999999999999999999999999999999999999999 1 输出 100000000000000000000000000000000000000000000000000 程... 阅读详情

相关推荐

基于openwrt平台搭建局域网技术验证之四

1、测试目的 验证l2tp客户端模式的可行性。 提供vpn-l2tp模式的客户端功能。 2、参考资料 参考链接1:https://www.lucktang.com/191.html 3、测试过程 测试过程需要用到的资源: 路由器俩个 win7系统电脑俩台 ③ 交换机一个 ④ 网线三根 测试组网如下图所示: 组网说明: R0公司路由器 S1 交换机 R1 路由器1 R2 路由器2 PC1 个人电脑1 PC2 个人电脑2 (R0) lan口接(S1)...

caofengtao1314的专栏 1962

关于以下程序段的输出正确的是:String s1=“abc“+“def“;String s2=new String(s1); if(s1.equals(s2))System.out.println

关于以下程序段的输出正确的是: String s1="abc"+"def";//1 String s2=new String(s1);//2 if(s1.equals(s2))//3 System.out.println(".equals succeeded");//4 if(s1==s2)//5 System.out.println("==succeeded");//6 A.输出".equals succeeded",输出"==succeeded" B.输出".equals succeeded",不

weixin_45861152的博客 3478

DroidGuard虚拟机逆向解析:指令集、密钥派生与反调试机制

DroidGuard是Google在Android生态中部署的轻量级定制虚拟机,用于设备完整性校验。其核心原理是通过自解释字节码、多层混淆指令集与动态密钥派生机制,在ART运行时构建静默安全沙箱。技术价值在于规避传统API检测盲区,实现高鲁棒性环境感知;典型应用场景包括金融SDK风控、Play Services可信启动及合规性审计。本文深入拆解其4字节指令编码规则、基于设备指纹的三阶段密钥派生(SHA256→Feistel→AES)、以及五层反调试体系(ptrace快照、时间差分、内存页探测、指令流校验、服

weixin_32736961的博客 587

String s1 = new String("abc")和String s2 = "abc"的区别

今天在看JVM的时候突然想到这样一个问题,即String s1 = new String("abc"); String s2 = "abc";System.out.println(s1 == s2);//答案是false问题有两个: String s2 = “abc”时发生了什么? String s1 = new String(“abc”)时又做了什么? 第二个问题是比较好回答的,根据官方文档:

中华胡杨的专栏 1万+

AI智能体赋能Cypress:自动化前端测试的新范式

自动化测试是现代软件工程保障质量的核心实践,其原理是通过脚本模拟用户操作,对软件功能进行验证。随着大语言模型(LLM)和智能体(Agent)技术的发展,测试自动化正迈向智能化新阶段。智能体能够理解自然语言描述的测试需求,并自主规划、执行测试步骤,这为应对前端UI频繁变更、测试用例维护成本高等挑战提供了新思路。在工程实践中,将Cypress这一流行的前端测试框架封装为智能体可调用的标准化技能(Skill),是实现这一愿景的关键。通过设计清晰的交互协议和状态管理机制,智能体可以像人类测试工程师一样“感知”页面状

weixin_33726318的博客 687

十.镜头知识之畸变问题

对于理想光学系统,在一对共轭的物像平面上,像的放大率是一个常数。但是对于实际的光学系统,当视场较大或很大时,像的放大率就要随视场而异,这样就会使像相对于物体失去相似性。这种使像变形的成像缺陷称为畸变。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 2127

【C++练习】string:字符串题型训练(5道编程题)

【C++练习】string:字符串题型训练(5道编程题)💯💯💯 暑假的你是否空虚,寂寞?是否迷茫,不知所措?如果是的话,那就来和我一起刷题吧!

Extreme_wei的博客 2763

【Unity3D开发小游戏】《打地鼠游戏》Unity开发教程

文章目录一、前言二、源码三、正文版本1、相机设置2、洞口设置3、洞口脚本4、鼹鼠5、鼹鼠动画6、鼹鼠碰撞器7、鼹鼠脚本8、击中鼹鼠的效果9、实现击中效果10、增加更多的洞口 一、前言 让我们使用Unity3D开发一个打地鼠游戏吧。 打地鼠游戏是一个非常有趣的街机游戏,是在1976年左右发明的。 游戏的主要玩法就是打击从洞里出来的鼹鼠,玩家击中鼹鼠的速度越快,得分就越高 我们将讲解制作游戏的所需的每...

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 8461

字符串类编程题

1. 替换空格 实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 思路: 首先要确定是不是在本身上修改,如果是,则要题目保证内存足够。否则,可以考虑自己new空间。 代码: class Solution { public: void replaceSpace(char *str, int length) { if (str == nullptr || length <

qq_43003252的博客 2510

45、概率与模糊性:粗糙事件与模糊事件概率的探索

本文探讨了概率理论与模糊性理论在处理现实世界不确定性中的应用,重点分析了模糊事件和粗糙事件的概率定义、性质及其条件概率。同时,介绍了近似贝叶斯网络分类器在信息系统中的应用,以及如何通过概率决策约简提高分类效率。这些方法为处理不确定信息提供了灵活的工具,并在决策和数据分析中具有重要价值。

ik67890123的博客 135

世界职业院校技能大赛商贸赛道项目参考逐字稿一

商贸赛道“智选优品”—基于大数据与AI驱动的跨境电商平台项目参考逐字稿您订阅本专栏后即可`永久享有所有文章的查阅权`,希望我们更新的参考资料能帮助到您。如果您需要我们团队赋能培训可联系我(企业一线工程师及国一获奖选手在线培训支持:每周直播精讲(可回放,支持弹幕答疑)、代码Review+技术售后(拉群随时问,12h内响应)、④路演PPT+答辩话术一对一点评,评委视角提前彩排、适合:中职/高职赛项选手、指导老师带队、校企工作室、整校打包另谈(可开发票))

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 1591

String 有趣简单的编程题

灵活使用 String 中方法,实现对应的操作,提高开发效率。对应String 字符串的频繁拼接,建议使用 StringBuffer / StringBuild 替换了。理解 ASCII 码表中的 数字字符 char 转换为 int 的数值的方式:!!

weixin_61635597的博客 2073

凝聚态物理新引擎:AI 驱动材料预测与相变识别大突破

摘要:本文深入探讨 AI 在凝聚态物理中的创新应用。在材料性质预测方面,AI 借助数据收集、特征提取和模型训练,能依据材料微观信息准确预估其宏观性质,以石墨烯为例验证了高效性。对于拓扑相变识别,AI 通过分析量子力学数据,利用机器学习算法判别相变节点,助力拓扑绝缘体研究。尽管面临数据质量、模型可解释性等挑战,但未来多模态数据融合、可解释 AI 等发展方向,将推动 AI 与凝聚态物理深度融合,助力探索物质奥秘与新材料研发。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1828

华为[编程题] 简单错误记录 (string的使用)

[编程题] 简单错误记录 时间限制:1秒 空间限制:65536K 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。  处理: 1.记录最多8条错误记录,对相同的错误记录(即文件名称和行号完全匹配)只记录一条,错误计数增加;(文件所在的目录不同,文件名和行号相同也要合并) 2.超过16个字符的文件名称,只记录文件的最后有效16个字符;(如果文件名不同,而只是文件名的后1...

qq_29762941的博客 338

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C++知识点之string,结合华为编程题:简单错误记录分析(附加容器pair知识点)

C++中string类的详解string是C++标准库的一个重要的部分,主要用于字符串处理。可以使用输入输出流方式直接进行操作,也可以通过文件等手段进行操作。string类的声明头文件:#include< string > 命名域的声明:using namespace std;string类的函数原型string类的构造函数: string(const char *s); //用c字符串s

优快云_564174144的博客 1006

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C++ string类

string类(C++合辑第四篇)

weixin_72501602的博客 790

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

C++面试中string类的一种正确简明的写法

本文首发于酷壳网 http://coolshell.cn/articles/10478.html先说说程序员(应届生)面试的一般过程,一轮面试(面对一到两个面试官)一般是四、五十分钟,面试官会问两三个编程问题(通常是两大一小),因此留给每个编程题的时间只有 20 分钟。这 20 分钟不光是写代码,还要跟面试官讨论你的答案并解答提问,比如面试官拿过你的答案纸,问某一行代码如果修改会有什么后果。因此真...

923723914 86

C++STL string简单实现

std::string是C++标准模板库中的一个类,用于处理字符串。与C语言的字符串相比,std::string 提供了更强大的功能和更安全的操作, 这次我们来简单实现一下

MindbniM的博客 1541

简单的讲一下String,StringBuilder和StringBuffer的区别

String、StringBuilder和StringBuffer的区别 String类: String是一个长度不可变的字符序列,底层是一个被final修饰的char[]数组,所以说,任何对 String 类型进行改变的操作实际上都是重新生成了一个新的String对象,然后将指针指向新的 String 对象,这样不仅效率低下,而且大量浪费有限的内存空间,所以经常改变内容的字符串最好不要用 String 。 上图中,首先执行了一个String s = “JAVA” 对象,对象s入栈,对应的堆中生成了...

weixin_43786099的博客 1万+

C++中string的简单实现

string的简单实现

2402_82658387的博客 907

(C++ STL)string类的简单模拟实现与源码展示

string类的简单模拟实现与源码展示

瞌睡不来的博客 1124

C#中String、String[]、List<string>相互转换及string成员substring、split简单使用

一、相互转换 1. String > String[] String s = "a,b,c,d,e"; String[] sArray = s.Split(','); 2. String[] > String string[] sArray = {"a", "b", "c", "d","e"}; string s = String.Join(",", sArray); 3.String[] > List<String> string[] sArray = {

LO520_1314的博客 2万+

C++ 自己动手简单实现字符串String类

实现一个自己的String类是一道考验C++基础知识的好题。能够准确无误地编写出String类的构造函数、拷贝构造函数、赋值函数和析构函数的面试者至少已经具备了C++基本功的60%以上! 在这个类中包括了指针类成员变量m_pData,当类中包括指针类成员变量时,一定要重载其拷贝构造函数、赋值函数和析构函数,这既是对C++程序员的基本要求,也是《Effective C++》中特别强调的条款。 仔...

魔筝炼药师 5086

17.<String 类的常见操作>

本篇博客主要讲解Java基础语法中的 认识 String 类 ,了解 String 类的基本用法,知道字符串的三种常见构造方法。 会使用String对象的比较,知道==、equals、compareTo、compareToIgnoreCase比较的用法和区别。等String类常见用法。熟练掌握 String 类的常见操作 、认识字符串常量池、 认识 StringBuffer 和 StringBuilder、最后是String类编程题的练习。

m0_73456341的博客 1361

手写简单的string类

在C++面试中关于的面向对象知识点的考察中,面试官很可能会直接让你实现一个简单的类。而是实现一个系统中已经存在的类比如String更是可能性很高,笔者就遇到了这种情况。一个简单的类包含了面向对象中的诸多细节,不失为一种很好的考察形式。除了基本的构造函数,析构函数,访问级别控制外,复制构造函数,赋值操作符,友元,异常安全性的了解与使用也是非常重要的方面。下面是我自己实现的一个简单的String类,以后有空再持续完善。

njustzj001的专栏 3477
上一篇: JAVA设计模式之单例模式
下一篇: 利用JDK开发WebService简单实现
詹詹自喜KING
博客等级 码龄11年 40粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值