-
java中把一个字符串中大写字母转换为小写,小写字母转换为大写
2021-02-22 14:15:47java中把一个字符串中大写字母转换为小写,小写字母转换为大写 观看提示: 这里提供2中思维,但是第一种是正确的,第二种是错误的;第二种的思维可以了解了解,但是需要注意的是如果某个字符串定义为String类型,...java中把一个字符串中大写字母转换为小写,小写字母转换为大写
观看提示:
这里提供2中思维,但是第一种是正确的,第二种是错误的;第二种的思维可以了解了解,但是需要注意的是如果某个字符串定义为String类型,那么这个串就不能改变了;如果需要改变,那么应该使用StringBuffer,这个例子也能够很好的说明StringBuffer和String之间的区别!
下面的代码中exChange()能够得到正确的结论,exChange2()不能得到正确的结论,原因就是上面说的:如果某个字符串定义为String类型,那么这个串就不能改变了
-
//把一个字符串中的大写转为小写,小写转换为大写:思路1
-
public static String exChange(String str){
-
StringBuffer sb = new StringBuffer();
-
if(str!=null){
-
for(int i=0;i<str.length();i++){
-
char c = str.charAt(i);
-
if(Character.isUpperCase(c)){
-
sb.append(Character.toLowerCase(c));
-
}else if(Character.isLowerCase(c)){
-
sb.append(Character.toUpperCase(c));
-
}
-
}
-
}
-
return sb.toString();
-
}
-
//把一个字符串中的大写转为小写,小写转换为大写:思路2
-
public static String exChange2(String str){
-
for(int i=0;i<str.length();i++){
-
//如果是小写
-
if(str.substring(i, i+1).equals(str.substring(i, i+1).toLowerCase())){
-
str.substring(i, i+1).toUpperCase();
-
}else{
-
str.substring(i, i+1).toLowerCase();
-
}
-
}
-
return str;
-
}
【温馨提示】.
Apache的commons-lang包中有很多我们常用的方法.比如IO操作的中的拷贝整个目录,判断一个字符是不是符合Email的格式,判断一个字符是不是数字型.....
所以千万别什么都自己写.尽量看看在其中是不是已经有现成的方法了.
比如上面这个问题,.就可以这么写【项目中需要有commons-lang这个包,可以去http://commons.apache.org/proper/commons-lang/download_lang.cgi下载】
String str = "aBcD";System.out.println(StringUtils.swapCase(str));
我看了源码:StringUtils.swapCase(str)这个方法的实现其实跟第一种差不多!下面是apache官方的swapCase这个方法
-
/**
-
* <p>Swaps the case of a String changing upper and title case to
-
* lower case, and lower case to upper case.</p>
-
*
-
* <ul>
-
* <li>Upper case character converts to Lower case</li>
-
* <li>Title case character converts to Lower case</li>
-
* <li>Lower case character converts to Upper case</li>
-
* </ul>
-
*
-
* <p>For a word based algorithm, see {@link org.apache.commons.lang3.text.WordUtils#swapCase(String)}.
-
* A {@code null} input String returns {@code null}.</p>
-
*
-
* <pre>
-
* StringUtils.swapCase(null) = null
-
* StringUtils.swapCase("") = ""
-
* StringUtils.swapCase("The dog has a BONE") = "tHE DOG HAS A bone"
-
* </pre>
-
*
-
* <p>NOTE: This method changed in Lang version 2.0.
-
* It no longer performs a word based algorithm.
-
* If you only use ASCII, you will notice no change.
-
* That functionality is available in org.apache.commons.lang3.text.WordUtils.</p>
-
*
-
* @param str the String to swap case, may be null
-
* @return the changed String, {@code null} if null String input
-
*/
-
public static String swapCase(String str) {
-
if (StringUtils.isEmpty(str)) {
-
return str;
-
}
-
char[] buffer = str.toCharArray();
-
for (int i = 0; i < buffer.length; i++) {
-
char ch = buffer[i];
-
if (Character.isUpperCase(ch)) {
-
buffer[i] = Character.toLowerCase(ch);
-
} else if (Character.isTitleCase(ch)) {
-
buffer[i] = Character.toLowerCase(ch);
-
} else if (Character.isLowerCase(ch)) {
-
buffer[i] = Character.toUpperCase(ch);
-
}
-
}
-
return new String(buffer);
-
}
-
-
java字符串互换_Java中把一个字符串中的大小写字母互换
2021-02-28 10:10:59Java中把一个字符串中大写字母转换为小写,小写字母转换为大写这里提供2中思维,但是第一种是正确的,第二种是错误的;第二种的思维可以了解了解,但是需要注意的是如果某个字符串定义为String类型,那么这个串就不...Java中把一个字符串中大写字母转换为小写,小写字母转换为大写
这里提供2中思维,但是第一种是正确的,第二种是错误的;第二种的思维可以了解了解,但是需要注意的是如果某个字符串定义为String类型,那么这个串就不能改变了;如果需要改变,那么应该使用StringBuffer,这个例子也能够很好的说明StringBuffer和String之间的区别!
下面的代码中exChange()能够得到正确的结论,exChange2()不能得到正确的结论,原因就是上面说的:如果某个字符串定义为String类型,那么这个串就不能改变了//把一个字符串中的大写转为小写,小写转换为大写:思路1
public static String exChange(String str){
StringBuffer sb = new StringBuffer();
if(str!=null){
for(int i=0;i
char c = str.charAt(i);
if(Character.isUpperCase(c)){
sb.append(Character.toLowerCase(c));
}else if(Character.isLowerCase(c)){
sb.append(Character.toUpperCase(c));
}
}
}
return sb.toString();
}
//把一个字符串中的大写转为小写,小写转换为大写:思路2
public static String exChange2(String str){
for(int i=0;i
//如果是小写
if(str.substring(i, i+1).equals(str.substring(i, i+1).toLowerCase())){
str.substring(i, i+1).toUpperCase();
}else{
str.substring(i, i+1).toLowerCase();
}
}
return str;
}
【温馨提示】.
Apache的commons-lang包中有很多我们常用的方法.比如IO操作的中的拷贝整个目录,判断一个字符是不是符合Email的格式,判断一个字符是不是数字型.....
所以千万别什么都自己写.尽量看看在其中是不是已经有现成的方法了.
比如上面这个问题,.就可以这么写【项目中需要有commons-lang这个包,可以去http://commons.apache.org/proper/commons-lang/download_lang.cgi下载】String str = "aBcD";
System.out.println(StringUtils.swapCase(str));
我看了源码:StringUtils.swapCase(str)这个方法的实现其实跟第一种差不多!下面是apache官方的swapCase这个方法/**
*
Swaps the case of a String changing upper and title case to
* lower case, and lower case to upper case.
*
*
*
Upper case character converts to Lower case*
Title case character converts to Lower case*
Lower case character converts to Upper case*
*
*
For a word based algorithm, see {@link org.apache.commons.lang3.text.WordUtils#swapCase(String)}.
* A {@code null} input String returns {@code null}.
*
*
* StringUtils.swapCase(null) = null
* StringUtils.swapCase("") = ""
* StringUtils.swapCase("The dog has a BONE") = "tHE DOG HAS A bone"
*
*
*
NOTE: This method changed in Lang version 2.0.
* It no longer performs a word based algorithm.
* If you only use ASCII, you will notice no change.
* That functionality is available in org.apache.commons.lang3.text.WordUtils.
*
* @param str the String to swap case, may be null
* @return the changed String, {@code null} if null String input
*/
public static String swapCase(String str) {
if (StringUtils.isEmpty(str)) {
return str;
}
char[] buffer = str.toCharArray();
for (int i = 0; i
char ch = buffer[i];
if (Character.isUpperCase(ch)) {
buffer[i] = Character.toLowerCase(ch);
} else if (Character.isTitleCase(ch)) {
buffer[i] = Character.toLowerCase(ch);
} else if (Character.isLowerCase(ch)) {
buffer[i] = Character.toUpperCase(ch);
}
}
return new String(buffer);
}
-
统计字符串中第一个只出现一次的字符
2020-12-16 11:14:16在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。 示例: s = “abaccdeff” 返回 “b” s = “” 返回 " " 限制: 0 <= s 的长度 <= 50000 思路分析:有序哈希表 ...在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
示例:
s = “abaccdeff”
返回 “b”s = “”
返回 " "限制:
0 <= s 的长度 <= 50000
思路分析:有序哈希表
可以把整个字符串以字符为Key,出现的次数为Value,存入哈希表中。有序哈希表中的键值对是 按照插入顺序排序 的。基于此,可通过遍历有序哈希表,实现搜索首个 “数量为 1 的字符”。
Java代码如下:public char firstUniqChar(String s) { LinkedHashMap<Character,Integer> map = new LinkedHashMap<>(); for (char c : s.toCharArray()) { if (map.containsKey(c)) map.put(c,map.get(c) + 1); else map.put(c, 1); } Iterator it = map.entrySet().iterator(); while (it.hasNext()){ Map.Entry<Character,Integer> entry = (Map.Entry) it.next(); if (entry.getValue() == 1) return entry.getKey(); } return ' '; }
优化
我们注意到,题目只要求返回字符,不要求统计次数。所以针对需求代码可以优化。Map 结构的 Value 使用 Boolean 类型是一个更好的选择,原因如下:
1)一个字母出现的次数大于 1 次就不符合要求了,这个时候使用 false标记状态相对于 Integer 的不断递增更合理,也更省空间。
2) 布尔值可以用来判断,可以简化代码逻辑。public char firstUniqChar(String s) { Map<Character, Boolean> dic = new LinkedHashMap<>(); char[] sc = s.toCharArray(); for(char c : sc) dic.put(c, !dic.containsKey(c)); for(Map.Entry<Character, Boolean> d : dic.entrySet()){ if(d.getValue()) return d.getKey(); } return ' '; }
-
【Java,面试】实现一个算法,确定一个字符串的所有字符是否全都不同
2015-07-06 23:02:27实现一个算法,确定一个字符串的所有字符是否全都...第二个办法通过位运算把空间幅度减小为了原来的1/8(代码假定字符串只含有小写的a到z),时间复杂度不变。 还有其他解法: 将字符串中的每个字符与其他字符比较//method to figure out if there's no duplicate char in a ASCII string import java.lang.String boolean isUniquedChars(String myString) { if(myString.length() > 256) return false; boolean[] char_set = new boolean[256]; for (int i = 0; i < myString.length(); i++) { int val = myString.charAt(i); if (char_set[val]) { return false; } char_set[val] = true; } return true; } //method 2 boolean isUniquedChars_method2(String str) { if (str.length() > 256) { return false; } int checker = 0; for (int i = 0; i < str.length(); i++) { int val = str.charAt(i) - 'a'; if (checker & (1 << val) > 0) {return false;} checker |= (1 << val); } return true; }
实现一个算法,确定一个字符串的所有字符是否全都不同
首先 询问字符串是ASCII 还是Unicode,二者不同只在于unicode需要更大的存储空间。
以上两个办法中,第一个办法的时间复杂度为O(n), 空间复杂度为O(1)
第二个办法通过位运算把空间幅度减小为了原来的1/8(代码假定字符串只含有小写的a到z),时间复杂度不变。
还有其他解法:
将字符串中的每个字符与其他字符比较,时间复杂度O(n2),空间复杂度O(1)
对字符串进行时间复杂度为O(nlog(n))的排序,线性检查有没有相邻字符完全相同的情况
-
(方法)把一个字符串中的大写字母转换成小写,小写字母转换成大写2
2009-03-29 16:39:00通常来说从栈里面取出数据要比从堆里面取出数据速度来的快,第一种方法几乎全部用... public class MyString2 { /** * 把一个字符串中的大写字母转换成小写,小写字母转换成大写 * 第二种方法 * @param s 传入的字 -
java字符串操作大全
2012-11-12 13:17:06它有两种形式,第一种形式用一个字符在调用字符串中所有出现某个字符的地方进行替换,形式如下: String replace(char original,char replacement) 例如:String s="Hello".replace('l','w'); 第二种形式... -
java中字符串中的大小写转换
2017-04-10 09:05:00Java中把一个字符串中大写字母转换为小写,小写字母转换为大写 观看提示: 这里提供2中思维,但是第一种是正确的,第二种是错误的;第二种的思维可以了解了解,但是需要注意的是如果某个字符串定义为String类型,... -
Java编程之字符串的大小写转换
2020-07-10 14:02:48/* * 需求:把一个字符串的首字母转换成大写,其余为小写。... * A:先获取第一个字符 * B; 获取除了第一个字符以外的字符 * C:把A转成大写 * D:把B转成小写 * E:C拼接D * */ public cla -
Java 字符串应用、数组、字母转换和公约数等
2013-07-24 07:35:473、 按字典序 如果第一个字符串大于第二个字符串 返回大于0,如果第一个字符串等于第二个字符串 返回等于0 ,如果第一个字符串小于第二个字符串返回小于0。 4、例子 compareToIgnoreCase("HARD","hark")... -
[算法练习-剑指offer]题34.第一个只出现一次的字符(Java)
2020-08-01 23:24:46题目名:第一个只出现一次的字符 编程语言 Java 题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始... -
-
剑指12(第一个只出现一次的字符)
2020-08-13 11:23:04第一个只出现一次的字符(java) 题目描述: 在字符串s中找出第一个只出现一次的字符。如果没有,返回一个单空格。s只包含小写字母。 样例: 输入:s = “abaccdeff” 输出:‘b’ 输入:s = “” 输出:’ ’ 输入:s... -
剑指 Offer 50. 第一个只出现一次的字符
2020-09-09 21:34:24在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。 示例: s = “abaccdeff” 返回 “b” s = “” 返回 " " 限制: 0 <= s 的长度 <= 50000 java 解题思路: 创建一... -
String类常见操作(含动态字符串)
2020-02-19 23:50:25(1)字符串首字母大写: 字符转为大写:toUpperCase(); 字符转为小写:toLowerCase();...(2)把获取的第一个字母变成大写; (3)将后面的字母与其拼接 */ import java.util.*; public class Stri... -
《java入门第一季》之类String类小案例
2016-05-09 21:49:33* 需求:把一个字符串的首字母转成大写,其余为小写。(只考虑英文大小写字母字符) * 举例: * helloWORLD * 结果: * Helloworld * * 分析: * A:先获取第一个字符 * B:获取除了第一个字符以外的... -
oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串
2017-05-06 20:26:52varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number(m,n) m(1~38) n(-84~127) 可以存储正数、负数、零、定点数和精度为38位的浮点数... -
《Java数据结构和算法》第二版 Robert lafore 编程作业 第十一章
2012-09-13 21:49:43《Java数据结构和算法》第二版 Robert lafore 编程作业 第十...需要一个把字符串转换成数组下标的 哈希函数。参考本章“哈希化字符串”一节。假设字符串全是小写字母,所以26 个字符就足够了。 11.3 写一 -
华南理工大学软件学院2017考研复试机试第一题代码(Java)
2019-03-02 14:58:00输入一个字符串,要求输出能把所有的小写字符放前面,大写字符放中间,数字放后面,并且中间用空格隔开,如果同种类字符间有不同种类的字符,输出后也要用字符隔开 如: 输入:12abc3KF12 输出:abc KF 12 3 12 ... -
java and python学习——第二周leetcode刷题
2016-09-11 22:22:01学习java和python的第二周,感觉学习到了好多,收获了好多。... 这道题给我们两个字符串,第二个字符串只比第一个多一个小写字母,让我们把这个“异类”找出来。我的算法是这样的,用两层循环,如果对于第一个字符串中 -
java 中怎么规定元素方向_2014年Java方向C组第三题
2021-02-26 18:55:56标题:猜字母把abcd...s共19个字母组成的序列重复拼接106次,得到长度为2014的串。接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数...解析://准备题目要求的2014个字符组成的字符串String s = ""... -
Java开发技术大全(500个源代码).
2012-12-02 19:55:48HelloWorldApp.java 第一个用Java开发的应用程序。 firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载Applet的网页文件 第2章 示例描述:本章介绍开发Java的基础语法知识。 ... -
转换成小写字母
2020-10-09 19:47:55题目 实现函数 ToLowerCase(),该函数接收一个字符串参数...这个比较简单,首先第一种方法可以直接调用JAVA中的Tolowercase()方法,把字符串转换成小写。第二种就是要明白’A’和’a’之间相差32,大写字符和小写字符之 -
一个java正则表达式工具类源代码.zip(内含Regexp.java文件)
2009-10-25 12:01:41以前写了一个java的正规表达式的java工具类,分享一下,有用到的欢迎下载使用。 如果你有常用的定义好的,且测试通过的正规表达式,欢迎跟贴,也让我享用一下 . 类中用到了 jakarta-oro-2.0.jar 包,请大家自己在 ... -
java学习日记
2014-12-08 15:45:032013-04-211、字符串函数:indexOf;匹配相同的字符串。返回第一次查找到的下标split;分割字符串;返回一个字符串数组...把字符串全部转换为小写字母toUpperCase;把字符串全部转换为大写字母2、基本类型与字符串 -
leetcode【每日一题】14. 最长公共前缀 Java
2020-06-15 11:53:34题干 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串...把数组第一个字符串拿出来 和后边每个字符串进行比对 如果不是startwith 的话就往前边缩短 Java代码 package daily; public