字母异位词分组(java)

news2024/11/20 0:08:13

题目描述

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

字母异位词 是由重新排列源单词的所有字母得到的一个新单shilie

示例 1:

输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]

示例 2:

输入: strs = [""]

输出: [[""]]

示例 3:

输入: strs = ["a"]
输出: [["a"]]

java

我的思路

import java.util.ArrayList;
class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        boolean flag_list[] = new boolean[strs.length];
        List list = new ArrayList();
        for(int i=0;i<strs.length;i++){
            flag_list[i] = true;
        }
        String[] str_s = new String[strs.length];
        for (int i=0;i<strs.length;i++) {
            char[] chars = strs[i].toCharArray();
            Arrays.sort(chars);
            str_s[i]= String.valueOf(chars);
        }
        for (int i=0;i<strs.length;i++){
            if(flag_list[i]){
               List list_child =new ArrayList();
               list_child.add(strs[i]);
                for(int j=i+1;j<strs.length;j++){
                    if(str_s[i].equals(str_s[j])){
                        list_child.add(strs[j]);
                         flag_list[j] =false;
                     }
                }
                list.add(list_child);
            }      
        }
        return list;
    }
}

 

 官方的思路:

import java.util.ArrayList;
class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        Map<String, List<String>> hashMap =  new HashMap<>();
        for (String str : strs) {
            char[] chars = str.toCharArray();
            Arrays.sort(chars);
            String str_s = String.valueOf(chars);
            if (hashMap.containsKey(str_s)){
                hashMap.get(str_s).add(str);
            } else {
                ArrayList<String> strings = new ArrayList<>();
                strings.add(str);
                hashMap.put(str_s, strings);
            }
        }
        List<List<String>> resultList = new ArrayList<>(hashMap.values());
        return resultList;
    }
}

查漏补缺:

1、String.valueOf(chars);

由基本数据型态转换成String

String 类别中已经提供了将基本数据型态转换成 String 的 static 方法 ,也是 String.valueOf() 这个参数多载的方法 
有以下几种
(1)String.valueOf(boolean b) : 将 boolean 变量 b 转换成字符串 
(2)String.valueOf(char c) : 将 char 变量 c 转换成字符串 
(3)String.valueOf(char[] data) : 将 char 数组 data 转换成字符串 
(4)String.valueOf(char[] data, int offset, int count) : 将 char 数组 data 中 由 data[offset] 开始取 count 个元素 转换成字符串 
(5)String.valueOf(double d) : 将 double 变量 d 转换成字符串 
(6)String.valueOf(float f) : 将 float 变量 f 转换成字符串 
(7)String.valueOf(int i) : 将 int 变量 i 转换成字符串 

由 String 转换成 数字的基本数据型态

要将 String 转换成基本数据型态转 ,大多需要使用基本数据型态的包装类别 
比如说 String 转换成 byte ,可以使用 Byte.parseByte(String s) ,这一类的方法如果无法将 s 分析 则会丢出 NumberFormatException 
(1)byte : Byte.parseByte(String s) : 将 s 转换成 byte 
(2)Byte.parseByte(String s, int radix) : 以 radix 为基底 将 s 转换为 byte ,比如说 Byte.parseByte("11", 16) 会得到 17 
(3)double : Double.parseDouble(String s) : 将 s 转换成 double 
(4)float : Double.parseFloat(String s) : 将 s 转换成 float 
(5)int : Integer.parseInt(String s) : 将 s 转换成 int 
(6)long : Long.parseLong(String s)

2、Arrays

Arrays常用方法(超详解)-CSDN博客

其他补充:

字符串:

1、int length();

2、char charAt(值);

语法 :字符串名.charAt(值);  返回值为 char 类型。从字符串中取出指定位置的字符

String str="淡忘_Java";
        char c = str.charAt(3);
        System.out.println("指定字符为:" + c);
运行结果:指定字符为:J

3、char toCharArray();

语法 :字符串名.toCharArray();返回值为 char 数组类型。将字符串变成一个字符数组

String str="世界你好";
char c[] = str.toCharArray(); 
for (int i = 0; i < c.length; i++)
System.out.println("转为数组输出:" + c[i]);

 运行结果:
	转为数组输出:世
	转为数组输出:界
	转为数组输出:你
    转为数组输出:好

4、 int indexOf(“字符”)

语法 :字符串名.indexOf(“字符”);字符串名.indexOf(“字符”,值);查找一个指定的字符串是否存在,返回的是字符串的位置,如果不存在,则返回-1 。

 in lastIndexOf(“字符”) 得到指定内容最后一次出现的下标

String str = "I am a good student";
        int a = str.indexOf('a');//a = 2
        int b = str.indexOf("good");//b = 7
        int c = str.indexOf("w", 2);//c = -1
        int d = str.lastIndexOf("a");//d = 5
        int e = str.lastIndexOf("a",3);//e = 2
     

5、toUpperCase(); toLowerCase();字符串大小写的转换

6、String[] split(“字符”)

根据给定的正则表达式的匹配来拆分此字符串。形成一个新的String数组。

String str = "boo:and:foo";
String[] arr1 = str.split(":");
String[] arr2 = str.split("o");
运行结果:
  arr1  //{ "boo", "and", "foo" }
  arr2  //{ "b", "", ":and:f" }

7、boolean equals(Object anObject)

语法 :字符串变量名.equals(字符串变量名);  返回值为布尔类型。所以这里用 if 演示。比较两个字符串是否相等,返回布尔值

8、trim();去掉字符串左右空格  
replace(char oldChar,char newChar);新字符替换旧字符,也可以达到去空格的效果一种。

String str = "      淡忘_Java博客         ";  
System.out.println("去掉左右空格后:" + str.trim());
 
运行结果:
  去掉左右空格后:淡忘_Java博客

第二种:
String str = "       淡忘_Java博客         ";  
System.out.println("去掉左右空格后:" + str.replace(" ","")); 

运行结果:
  去掉左右空格后:淡忘_Java博客

9、String substring(int beginIndex,int endIndex)  截取字符串

String str = "123淡忘_Java博客456";
        System.out.println("截取后的字符为:" + str.substring(0, 3));// 截取0-3个位置的内容   不含3
        System.out.println("截取后字符为:" + str.substring(2));// 从第3个位置开始截取    含2
        
 运行结果:
   截取后的字符为:123
   截取后字符为:3淡忘_Java博客456

10、boolean equalsIgnoreCase(String) 忽略大小写的比较两个字符串的值是否一模一样,返回一个布尔值

11、boolean contains(String) 判断一个字符串里面是否包含指定的内容,返回一个布尔值

12、boolean startsWith(String)  测试此字符串是否以指定的前缀开始。返回一个布尔值

13.boolean endsWith(String)  测试此字符串是否以指定的后缀结束。返回一个布尔值

14、上面提到了replace方法

接下继续补充一下 String replaceAll(String,String) 将某个内容全部替换成指定内容,  
String repalceFirst(String,String) 将第一次出现的某个内容替换成指定的内容

String str = ",,,,,,淡忘博客,,,,, ";
        System.out.println("改变后:" + str.replaceAll(",", "a"));
  运行结果:改变后:aaaaaa淡忘博客aaaaa 
  String str = ",,,,,,淡忘博客6不,,,,, ";
        System.out.println("改变后:" + str.replaceFirst("6不", "很6"));
   运行结果:改变后:,,,,,,淡忘博客很6,,,,, 

Java ----常用类-CSDN博客

Java String类的常用方法使用方法_java中string常用方法-CSDN博客

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

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

相关文章

fpga spi回环

SPI设备间的数据传输之所以又被称为数据交换,是因为 SPI协议规定一个 SPI设备 不能在数据通信过程中仅仅只充当一个"发送者(Transmitter)“或者"接收者 (Receiver)”.在每个 Clock 周期内,SPI 设备都会发送并接收一个 bit 大小的数据(不管主 设备好还是从设备),相当于…

计算机网络-理论部分(二):应用层

网络应用体系结构 Client-Server客户-服务器体系结构&#xff1a;如Web&#xff0c;FTP&#xff0c;Telnet等Peer-Peer&#xff1a;点对点P2P结构&#xff0c;如BitTorrent 应用层协议定义了&#xff1a; 交换的报文类型&#xff0c;请求or响应报文类型的语法字段的含义如何…

路由器基本原理与配置

一 &#xff0c; 路由是什么&#xff1f; 从源主机到目标主机的转发过程&#xff1b; 二 &#xff0c; 路由器 &#xff08;1&#xff09;路由器的工作原理 路由器是一种三层设备&#xff0c;是使用IP地址寻址&#xff0c;实现从源IP到达目标IP地址的端到端的服务&#xff0c…

windows的WSL Ubuntu子系统重置root或其他用户的密码

思路&#xff1a;以管理员身份运行PowerShell&#xff0c;在命令行窗口重置密码 &#xff0c;不需要删除或重新安装Linux子系统。 1、以管理员身份运行PowerShell 2、用root用户启动Ubuntu&#xff0c;执行 wsl.exe --user root 3、重置密码&#xff0c;执行passwd username&…

autoDL微调训练qwen2vl大模型

autodl是一家GPU服务厂商&#xff0c;提供专业的GPU租用服务&#xff0c;秒级计费、稳定好用 先去autodl把官方的帮助文档看懂先 AutoDL帮助文档 autodl注册并登陆&#xff0c;充钱&#xff0c;根据自己的情况租用新实例 创建新实例后马上关机&#xff0c;因为有个省钱的办法…

9.2 使用haarcascade_frontalface_default.xml分类器检测视频中的人脸,并框出人脸位置。

1&#xff09;程序代码&#xff1a; # 2.使用haarcascade_frontalface_default.xml分类器检测视频中的人脸&#xff0c;并框出人脸位置 import cv2# 加载人脸检测的 Haar 级联分类器 face_cascade cv2.CascadeClassifier(./data/haarcascades/haarcascade_frontalface_defaul…

K8S containerd拉取harbor镜像

前言 接前面的环境 K8S 1.24以后开始启用docker作为CRI&#xff0c;这里用containerd拉取 参考文档 正文 vim /etc/containerd/config.toml #修改内容如下 #sandbox_image "registry.aliyuncs.com/google_containers/pause:3.10" systemd_cgroup true [plugins.…

ARM64环境部署EFK8.15.3收集K8S集群容器日志

环境规划 主机IP系统部署方式ES版本CPU架构用户名密码192.168.1.225Ubuntu 22.04.4 LTSdockerelasticsearch:8.15.3ARM64elasticllodyi4TMmZD ES集群部署 创建持久化目录(所有节点) mkdir -p /data/es/{data,certs,logs,plugins} mkdir -p /data/es/certs/{ca,es01}服务器…

前端小练习——星辰宇宙(JS没有上限!!!)

前言&#xff1a;在刚开始学习前端的时候&#xff0c;我们会学习到前端三件套中的JavaScript&#xff0c;可能那时候读者没有觉得JavaScript这个语言有多么的牛逼&#xff0c;本篇文章将会使用一个炫酷的案例来刷新你对JavaScript这个语言的认知与理解。 ✨✨✨这里是秋刀鱼不做…

图文教程 | 2024年IDEA安装使用教程,JDK简易下载方法

前言 &#x1f4e2;博客主页&#xff1a;程序源⠀-CSDN博客 &#x1f4e2;欢迎点赞&#x1f44d;收藏⭐留言&#x1f4dd;如有错误敬请指正&#xff01; 目录 一、IDEA安装 二、激活 三、JDK安装 四、JDK环境配置 五、验证 一、IDEA安装 进入官网下载&#xff1a; Other…

【阅读记录-章节2】Build a Large Language Model (From Scratch)

目录 2.Working with text data2.1 Understanding word embeddings2.2 Tokenizing text通过一个简单的实验来理解文本的词元化概念关键概念 2.3 Converting tokens into token IDs实现分词器类&#xff08;Tokenizer Class&#xff09;应用分词器测试文本的编码与解码通过分词器…

已有docker增加端口号,不用重新创建Docker

已有docker增加端口号&#xff0c;不用重新创建Docker 1. 整体描述2. 具体实现2.1 查看容器id2.2 停止docker服务2.3 修改docker配置文件2.4 重启docker服务 3. 总结 1. 整体描述 docker目前使用的非常多&#xff0c;但是每次更新都需要重新创建docker&#xff0c;也不太方便&…

网页作业9

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>服务中心</title><style>* {margin:…

HTML and CSS Support HTML 和 CSS 支持

GoTo DevExpress Data Grid 数据网格 HTML and CSS Support HTML 和 CSS 支持 HTML和CSS支持允许您创建完全自定义的UI元素&#xff0c;并消除使用基于属性的UI自定义和CustomDraw事件。您可以构建 HTML 格式的 UI&#xff0c;并使用 CSS 样式自定义 UI 元素的外观设置、大小、…

集群聊天服务器(7)数据模块

目录 Mysql数据库代码封装头文件与源文件 Mysql数据库代码封装 业务层代码不要直接写数据库&#xff0c;因为业务层和数据层的代码逻辑也想完全区分开。万一不想存储mysql&#xff0c;想存redis的话&#xff0c;就要改动大量业务代码。解耦合就是改起来很方便。 首先需要安装m…

如何确保Python爬虫程序的稳定性和安全性?

在当今数字化时代&#xff0c;Python爬虫被广泛应用于数据采集和信息抓取。然而&#xff0c;确保爬虫程序的稳定性和安全性是开发过程中的重要考虑因素。本文将探讨如何通过技术手段和最佳实践来提高Python爬虫的稳定性和安全性&#xff0c;并提供代码示例。 稳定性保障 1. 异…

【知识科普】统一身份认证CAS

什么是CAS 综合概述一、CAS概述二、CAS的组成与工作原理三、CAS的特性与支持四、CAS的应用场景 示例展示场景设定CAS认证过程 其他认证细节CAS认证过程的细节CAS认证过程的特性 参考文献 综合概述 统一身份认证CAS&#xff08;Central Authentication Service&#xff09;&…

golang通用后台管理系统09(系统操作日志记录)

1.日志工具类 package log/**** 日志记录 wangwei 2024-11-18 15:30*/ import ("log""os""path/filepath""time" )// 获取以当前日期命名的日志文件路径 func getLogFilePath() string {currentDate : time.Now().Format("2006-…

解决微信小程序自定义tabbar点击两次才能跳转

在每个页面的js文件下加上此代码&#xff0c;selected属性代表每一个页面的下标&#xff0c;在不同的js文件下&#xff0c;要对应不同的selected值 代码&#xff1a; onShow() { // 确保 TabBar 存在并且设置选中项 if (this.getTabBar && this.getTabBar()) { this.…

golang开源框架:go开源验证框架validator

validator 单个字段格式验证 先来一个单个字段格式的验证 目录结构 在main函数中 package mainimport "awesomeProject/validate"func main() {validate.SingleFieldValidate() }在validator.go中 package validateimport ("github.com/go-playground/val…