package com.wsl.test;
import java.util.HashMap;
import java.util.Map;
import java.util.Stack;
import java.util.StringTokenizer;
public class StrOperation {
public static void main(String[] args) {
/*
* String str = "abcdrt"; StrReverse1(str);
* StrReverse2(str.toCharArray(), 0, str.length() - 1);
*/
// FirstNoRepeated();
// test();
charCounter();
}
private static void StrReverse1(String str) {
StringBuilder sb = new StringBuilder();
for (int i = str.length() - 1; i >= 0; i--) {
sb.append(str.charAt(i));
}
System.out.println("orignal:" + str + " reverse:" + sb.toString());
}
private static void StrReverse2(char[] b, int start, int end) {
char temp;
while (start < end) {
temp = b[end];
b[end] = b[start];
b[start] = temp;
start++;
end--;
}
System.out.print(new String(b));
}
private static String StrReverse3(String s) {
char[] str = s.toCharArray();
Stack<Character> stack = new Stack<Character>();
for (int i = 0; i < str.length; i++) {
stack.push(str[i]);
}
StringBuilder reverse = new StringBuilder();
while (!stack.isEmpty()) {
reverse.append(stack.pop());
}
return reverse.toString();
}
private static void StrReverse4(String s) {
String reverse = new StringBuffer(s).reverse().toString();
}
/**
* 字符串替换函数
*
* @param from
* 要替换的字符
* @param to
* 要替换成的目标字符
* @param source
* 要替换的字符串
* @return 替换后的字符串
*/
private static String str_replace1(String from, String to, String source) {
StringBuffer sf = new StringBuffer("");
StringTokenizer st = new StringTokenizer(source, from, true);
while (st.hasMoreTokens()) {
String tmp = st.nextToken();
if (tmp.equals(from)) {
sf.append(to);
} else {
sf.append(tmp);
}
}
return sf.toString();
}
private static String str_replace2(String source, String from, String to) {
int j = 0;
int i = 0;
String result = "";
String temp = source;
int fromlegth = from.length();
while (i < source.length()) {
if (source.substring(i).startsWith(from)) {
temp = source.substring(j, i) + to;
result += temp;
i += fromlegth;
j = i;
} else {
i++;
}
}
result += source.substring(j);
return result;
}
private static String str_replace3(String source, String from, String to) {
if (from == null || from.equals("")) {
return source;
}
String result = "";
int formlength = from.length();
int intPos;
while ((intPos = source.indexOf(from)) != -1) {
result = result + source.substring(0, intPos);
result = result + to;
source = source.substring(intPos + formlength);
}
result = result + source;
return result;
}
/**
* 高效替换程序 没看懂
*
* @return
*/
private static String str_replace4(String source, String from, String to) {
if (source == null) {
return null;
}
int i = 0;
if ((i = source.indexOf(from, i)) >= 0) {
char[] csrc = source.toCharArray();
char[] cto = to.toCharArray();
int len = from.length();
StringBuffer buf = new StringBuffer(source.length());
buf.append(csrc, 0, i).append(cto);
i += len;
int j = i;
while ((i = source.indexOf(from, i)) > 0) {
buf.append(csrc, j, i - j).append(cto);
i += len;
j = i;
}
buf.append(csrc, j, csrc.length - j);
return buf.toString();
}
return source;
}
// 最后一个字符特殊处理
private static Character FirstNoRepeated() {
String str = "aabcb";
Character ch = null;
for (int i = 0; i < str.length() - 1; i++) {
if (str.split(String.valueOf(str.charAt(i))).length == 2
&& str.charAt(i) != str.charAt(str.length() - 1)) {
ch = new Character(str.charAt(i));
break;
}
}
// 判断最后一个是否
if (str.charAt(str.length() - 1) != str.charAt(str.length() - 2)
&& str.split(String.valueOf(str.charAt(str.length() - 1))).length == 1) {
ch = str.charAt(str.length() - 1);
}
if (ch != null) {
System.out.println(ch);
}
return ch;
}
// 正规的办法
private static void FirstNoRepeated2() {
String str = "wangshaolei";
Character ch;
Map<Character, Integer> map = new HashMap<Character, Integer>();
for (int i = 0; i < str.length(); i++) {
if (map.containsKey(str.charAt(i))) {
map.put(str.charAt(i), 2);
} else {
map.put(str.charAt(i), 1);
}
}
for (int i = 0; i < str.length(); i++) {
if (map.get(str.charAt(i)) == 1) {
ch = str.charAt(i);
break;
}
}
}
/**
* 统计每个字符出现的次数
*/
private static void charCounter() {
String str = "asdfasdfwerqwesdlfjgsldf啦啦啦啦大小写都行,中文也行,字母也行!";
Map<Character, Integer> counterMap = new HashMap<Character, Integer>();
for (char c : str.toCharArray()) {
int count = 1;
if (counterMap.containsKey(c)) {
count += counterMap.get(c);
}
counterMap.put(c, count);
}
for (Map.Entry<Character, Integer> entry : counterMap.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
}

wangshaolei3622
- 粉丝: 0
最新资源
- csdn-example.zip.002
- csdn-example.zip.003
- msys2-shell.cmd 配置VC编译器环境
- csdn-example.zip.004
- csdn-examplea
- hhhhhhhhhhhgeargagearg
- DMP210DUFB4-PMOS-中文数据手册.pdf
- QTModbusTCP读写寄存器类封装
- AM26C32 -平衡数据四重差分线路接收器-中文数据手册.pdf
- ST1CC40-850kHz固定开关频率-单片DC-DC转换器-中文数据手册.pdf
- csdn-exampleb
- AI对抗样本检测:模型推理流量中的梯度泄露特征提取.pdf
- 6G太赫兹通信安全:物理层信令伪装攻击的频谱特征识别.pdf
- 5G切片网络流量监控:基于UPF接口的恶意切片识别实战.pdf
- AI模型投毒检测:TensorFlowLite流量中的异常权重传输特征.pdf
- AI预测模型实战:基于LSTM的DDoS攻击早期预警.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



- 1
- 2
前往页