Java必须掌握的遍历字符串和个数(含面试大厂题含源码)

在Java编程中,遍历字符串和统计字符个数是非常基础且常用的技能。下面我将介绍一些必须掌握的相关知识点和示例代码:

1. 字符串遍历

遍历字符串意味着逐个访问字符串中的每个字符。在Java中,可以使用for循环或charAt方法来实现。

使用for循环
String str = "Hello, World!";
for (int i = 0; i < str.length(); i++) {char c = str.charAt(i); // 获取位置i的字符System.out.println(c);
}
使用增强的for循环(Java 5及以上版本)
String str = "Hello, World!";
for (char c : str.toCharArray()) {System.out.println(c);
}

2. 字符个数统计

统计字符串中字符的个数通常需要使用到数据结构,如HashMap,用于存储每个字符及其出现的次数。

使用HashMap统计字符频率
import java.util.HashMap;String str = "example";
HashMap<Character, Integer> charCountMap = new HashMap<Character, Integer>();
for (char c : str.toCharArray()) {charCountMap.put(c, charCountMap.getOrDefault(c, 0) + 1);
}for (HashMap.Entry<Character, Integer> entry : charCountMap.entrySet()) {System.out.println(entry.getKey() + " " + entry.getValue());
}

3. 其他字符串处理技巧

  • 字符串分割String[] split(String regex)方法可以根据给定的正则表达式将字符串分割为子字符串数组。
  • 字符串替换String replace(CharSequence target, CharSequence replacement)方法可以替换字符串中的某部分内容。
  • 字符串查找int indexOf(int ch)int indexOf(String str)方法可以在字符串中查找字符或子字符串的位置。

掌握这些基础的字符串操作是进行更复杂Java编程的基石。在处理实际项目时,你会频繁使用到这些操作,特别是在文本处理、数据解析等方面。练习这些基础技能可以帮助你在Java编程的道路上更加稳固地前进。在准备软件开发的面试时,掌握一些常见的编程题目及其解法是非常重要的。下面,我将为你提供3道常见的面试题目,这些题目在大厂的面试中经常出现,并且每道题目都会附上相应的Java解决方案。

1. 字符串中的第一个唯一字符

题目描述:给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回-1。

示例代码

public class FirstUniqueChar {public int firstUniqChar(String s) {int[] charCount = new int[26]; // 假设输入字符串只包含小写字母for (char c : s.toCharArray()) {charCount[c - 'a']++;}for (int i = 0; i < s.length(); i++) {if (charCount[s.charAt(i) - 'a'] == 1) {return i;}}return -1;}
}

2. 反转字符串

题目描述:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

示例代码

public class ReverseString {public void reverseString(char[] s) {int left = 0, right = s.length - 1;while (left < right) {char temp = s[left];s[left++] = s[right];s[right--] = temp;}}
}

3. 有效的括号

题目描述:给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。

示例代码

import java.util.Stack;public class ValidParentheses {public boolean isValid(String s) {Stack<Character> stack = new Stack<>();for (char c : s.toCharArray()) {if (c == '(' || c == '[' || c == '{') {stack.push(c);} else {if (stack.isEmpty()) return false;if (c == ')' && stack.pop() != '(') return false;if (c == ']' && stack.pop() != '[') return false;if (c == '}' && stack.pop() != '{') return false;}}return stack.isEmpty();}
}

这些题目覆盖了字符串处理、栈的使用以及基本的算法思维,是面试中常见的题型。掌握这些题目不仅可以帮助你在面试中表现出色,还可以在日常工作中提高你的编程能力。

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

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

相关文章

【DAY11 软考中级备考笔记】数据结构 排序操作系统

数据结构 排序&&操作系统 3月14日 – 天气&#xff1a;晴 今天天气非常热&#xff0c;已经到20度了&#xff0c;春天已经来了。 1. 堆排序 堆排序的思想是首先建立一个堆&#xff0c;然后弹出堆顶元素&#xff0c;剩下的元素再形成一个堆&#xff0c;然后继续弹出元素&…

为什么要用scrapy爬虫库?而不是纯python进行爬虫?

为什么要用scrapy爬虫库&#xff1f;而不是纯python进行爬虫&#xff1f; Scrapy的优点Scrapy节省的工作使用纯Python编写爬虫的不足 Scrapy是一个使用Python编写的开源和协作的web爬虫框架&#xff0c;它被设计用于爬取网页数据并从中提取结构化数据。Scrapy的强大之处在于其广…

js进阶-函数参数-展开预算符-解构

一.函数参数 动态参数 剩余参数 1.1 动态参数 arguments是函数内部内置的伪数组变量&#xff0c;它包含了调用函数时传入的所有实参 function getSum() {// arguments 动态参数 只存在于 函数里面// 是伪数组 里面存储的是传递过来的实参console.log(arguments) // Argument…

自注意力机制函数(SelfAttention)python实现

Self-Attention。和Attention类似都是一种注意力机制。不同的是Attention是source对target&#xff0c;输入的source和输出的target内容不同。例如英译中&#xff0c;输入英文&#xff0c;输出中文。而Self-Attention是source对source&#xff0c;是source内部元素之间或者targ…

工科硕士研究生毕业论文撰写总结

工科硕士研究生毕业论文撰写总结 最近一段看了十几篇研究生毕业论文&#xff0c;发现不少问题。结合最近几年当评委及审论文的经验来总结下工科硕士研究生毕业论文撰写毕业论文问题与经验。 一&#xff0e;科技论文的总要求 论文是写给同行看的&#xff0c;注意读者对象。&a…

页面侧边栏顶部固定和底部固定方法

顶部固定用于侧边栏低于屏幕高度----左侧边栏 底部固定用于侧边栏高于屏幕高度----右侧边栏 vue页面方法 页面布局 页面样式&#xff0c;因为内容比较多&#xff0c; 只展示主要代码 * {margin: 0;padding: 0;text-align: center; } .head {width: 100%;height: 88px;back…

在notion里面实现四象限清单

四象限清单是一种时间管理工具&#xff0c;旨在帮助人们根据任务的重要性和紧急性来优先排序他们的工作。这个概念最早由德怀特艾森豪威尔提出&#xff0c;后来又被史蒂芬柯维在他的著作《高效能人士的七个习惯》中进一步普及。四象限清单将任务分为四个类别&#xff1a; 第一…

VueX详解

Vuex 主要应用于Vue.js中管理数据状态的一个库通过创建一个集中的数据存储&#xff0c;供程序中所有组件访问 使用场景 涉及到非父子关系的组件&#xff0c;例如兄弟关系、祖孙关系&#xff0c;甚至更远的关系组件之间的联系中大型单页应用&#xff0c;考虑如何更好地在组件外部…

洛谷 P5018 对称二叉树

题目背景 NOIP2018 普及组 T4 题目描述 一棵有点权的有根树如果满足以下条件&#xff0c;则被轩轩称为对称二叉树&#xff1a; 二叉树&#xff1b;将这棵树所有节点的左右子树交换&#xff0c;新树和原树对应位置的结构相同且点权相等。 下图中节点内的数字为权值&#xf…

计算机网络之网络层概念整理(上)

Ping背后协议的原理 Ping是一个网络工具&#xff0c;用于测试网络连接质量和设备可达性。它背后的协议是互联网控制消息协议&#xff08;Internet Control Message Protocol&#xff0c;简称ICMP&#xff09;。Ping通过发送ICMP回显请求消息给目标主机&#xff0c;并等待接收I…

window server2012 卸载iis后,远程连接黑屏

原因分析&#xff1a; 因为自己在卸载IIS的时候&#xff0c;不小心卸载了.net framework&#xff0c;系统没有了图形界面&#xff08;由完整模式Full变为了核心模式core&#xff09;&#xff0c;需要重新恢复.net framework4.5。 解决方法分析&#xff1a; 需要将核心模式co…

cool-admin node.js 实现分页 数据获取 直接框架

1.需求 获取当前的分页数据 cool有自己的封装的一套东西 2.解决 controller 注意注意注意 在这之前 配置 数据表和service Provide() CoolController({api: [],entity: BusinessOrderEntity,service: BusinessOrderService, }) /*** 获取分页数据*/Post(/page, { summary…

基于Vue移动端电影票务服务APP设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 相关技术 3 1.1 Vue框架 3 1.2 数据库MongoDB 3 1.3 Axios请求 3 1.4 H5、CSS3和JavaScript 4 1.5 本章小结 4 2 系统分析 5 2.1 功能需求 5 2.2 用例分析 5 2.3 用户功能 6 2.4本章小结 6 3 基于Vue电影票务服务APP设计 7 3.1 页面设计 …

YOLOv9改进策略:注意力机制 |通道注意力和空间注意力CBAM | GAM超越CBAM,不计成本提高精度

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文改进内容&#xff1a;通道注意力和空间注意力CBAM&#xff0c;全新注意力GAM&#xff1a;超越CBAM&#xff0c;不计成本提高精度 改进结构图如下&#xff1a; YOLOv9魔术师专栏 ☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️…

使用hive数组函数查找哪些用户在不同的时间点购买了同样的商品

背景 有一张用户购买过的商品的记录表&#xff0c;记录着每个小时不同用户购买的商品的记录&#xff0c;有一个需求是查找哪些用户在两个不同的时间点都购买了同样的商品 哪些用户在不同的时间点购买了同样的商品的实现 1.分别获取每个商品不同时间点的用户集合&#xff0c;…

Kotlin/Java中String的equals和==

Kotlin/Java中String的equals和 在Java中&#xff0c;如果定义一个常量String和new出一个String对象&#xff0c;是不同的&#xff1a; String s1 "zhang" String s2 new String("zhang") 因为在Java看来&#xff0c;s1只是一个常量&#xff0c;会放在…

大模型prompt提示词如何调优?

当使用大型模型&#xff08;如GPT-3.5&#xff09;时&#xff0c;可以通过优化提示&#xff08;prompt&#xff09;来引导模型生成更加符合预期的内容。以下是一些调优提示词的建议&#xff1a; 1、清晰的问题陈述&#xff1a;确保你的问题或提示清晰、简明&#xff0c;能够准…

Let’s Move Sui , 一起来学习吧

Let’s Move Sui是一个全新的交互式学习平台&#xff0c;通过SuiFrens的帮助教您如何在Sui上构建。设计供新手和经验丰富的开发者使用&#xff0c;Let’s Move Sui提供了一次非凡的Sui开发之旅&#xff0c;利用了Move在Sui上的独特之处&#xff0c;从基于对象的数据模型的基础知…

飞桨图像分割套件PaddleSeg初探

飞桨图像分割套件PaddleSeg初探 PaddleSeg是基于飞桨PaddlePaddle的端到端图像分割套件&#xff0c;内置45模型算法及140预训练模型&#xff0c;支持配置化驱动和API调用开发方式&#xff0c;打通数据标注、模型开发、训练、压缩、部署的全流程&#xff0c;提供语义分割、交互式…

项目性能优化—性能优化的指标、目标

项目性能优化—性能优化的指标、目标 性能优化的终极目标是什么 性能优化的目标实际上是为了更好的用户体验&#xff1a; 一般我们认为用户体验是下面的公式&#xff1a; 用户体验 产品设计&#xff08;非技术&#xff09; 系统性能 ≈ 系统性能 快 那什么样的体验叫快呢…