1、求取字符串中出现的第一个非重复字符。

    比如: "hello" 中的 h, "hello, how r you?" 中的 e

2、使用26字符母实现加密

   比如: StringUtil 加密后的结果为 FgevatHgvy,Hello 加密的结果为 Uryyb

3、翻转一个字符串

  比如:“你好啊!” 翻转成 "!啊好你"

4、检查一个字符串是否为空(包括 null 的判断)

实现方法(个人想法):

第一题

   //第一种实现方式
  public String getIsStr(String str){
String[] arr = str.replaceAll("\\s","").split("");
for (int i = 0; i <arr.length ; i++) {
if( str.lastIndexOf(arr[i]) == str.indexOf(arr[i]) ){
return arr[i].toString();
}
}
return "";
}
  //第二种实现方式
  String str ="hello, how r you?";
  String liststr = str.replaceAll("[^a-zA-Z]","");
  String[] listarr = str.split("");
  for (int i = 0; i <listarr.length ; i++) {
  boolean flag = true;
  for (int j = i+1 ;j<listarr.length ;j++){
   if(listarr[i].equals(listarr[j])){
   flag = false;
   continue;
   }
   }
   if (flag){
   System.out.println(listarr[i]);
   break;
   }
  }
  //第三种实现方式   public char find(String str){    //存放重复的数据集合
   HashSet<Character> data = new HashSet<>();
   //存放不重复的数据集合
   List<Character> data1 = new ArrayList<>();
   for (int i = 0; i <str.length() ; i++) {
   //将 目标字符串 分割成 字符
   char c = str.charAt(i);
   //如果集合data中存在这个目标内容,跳出
   if(data.contains(c)){
   continue;
   }
   //如果集合 data1 中 已经存在此目标内容,进行 移除 向 data集合中添加数值,否则继续向data1集合中添加
   if(data1.contains(c)){
   data1.remove((Character) c);
   data.add(c);
   }else{
   data1.add(c);
   }
   }   if(data1.size() >0 ){
   return data1.get(0);
   }else{
   return 0;
  }   }

第二题

public String rotate(String str){
// 接收结果的变量
String result ="";
//"a","b","c","d","e","f","g","h","i","j","k","l","m"
//"n","o","p","q","r","s","t","u","v","w","x","y","z"
//大小写字符数组
String [] lower = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
String [] upper = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"}; //将 目标字符串 去掉 里面一些符号 并且 分割
String [] arr = str.replaceAll("\\s","").split(""); for (int i = 0; i <arr.length ; i++) {
//将目标值都跟 小写字符数组 对一遍 当目标值等于 lower里 相对应的值时, 使用一个小算法
for (int j = 0 ; j < lower.length; j++) {
if( arr[i].equals(lower[j]) ){
// 比如 当 目标值 是 a 那么通过计算 得到将是 lower数组的 u
result +=lower[(j + 13)%26];
}
}
//将目标值都跟 大写字符数组 对一遍 当目标值等于 upper里 相对应的值时, 使用一个小算法
for (int k = 0; k <upper.length ; k++) {
if( arr[i].equals(upper[k]) ){
// 比如 当 目标值 是 A 那么通过计算 得到将是 lower数组的 U
result +=upper[(k + 13)%26];
}
}
}
return result;
}
   //第二种方式   public String rotate1(String str){
  String result = "";
  String [] arr = str.split("");
  for(int i =0 ;i<arr.length; i++){
   //将数组里值转成ASCII码 65 - 90 大写26字母 97 - 122 小写字母
  if( arr[i].hashCode() >=65 && arr[i].hashCode()<=90 ){
   int index1 = arr[i].hashCode();
  if(index1 <= 78){
   result += (char)(index1 + 13 );
  }else{
   result += (char)(index1 - 13 );
  }
  //65 = A = N = 78
  // 65 + 13 =78
  }else if( arr[i].hashCode() >=97 && arr[i].hashCode() <=122 ){
   int index1 = arr[i].hashCode();
  if(index1 <= 110 ){
   result += (char)(index1 + 13 );
  }else{
   result += (char)(index1 - 13 );
  }
  }else{
   result +=arr[i];
  }
  }
   return result;
  }

第三题

  //第一种方式
  public String reverse(String str){
//将字符 分割成 字符数组
String [] arr = str.split("");
//获取 字符数组的长度
int size = arr.length;
//拿一个结果变量来接收
String result = "";
//循环
for (int i = 0; i <arr.length ; i++) {
// 倒取 数组的值 赋予 结果变量
result += arr[ --size];
}
return result;
}
  //第二种方式   public String reverse1(String str){
  StringBuilder result =new StringBuilder(str);
   return result.reverse().toString();
  }

第四题

   public boolean isEmpty(String str){
//字符串对象和字符串变量这两个概念的区别
//字符串变量保存一个字符串对象的引用
//判断字符串是否空涉及两个层次
//1、首先判断字符串变量的引用是否为空,即空对象的概念,用null来判断,可以用== null;(注意不能用equals(null),在参数为null情况下,返回值永远是false)
//2、是在不为空对象的情况下,在判断字符串对象是否为空串,即长度为0.用length()==0
if(!( str == null ||str.length() == 0)){
return true;
}
return false;
}

Java思维题的更多相关文章

  1. zoj 3778 Talented Chef(思维题)

    题目 题意:一个人可以在一分钟同时进行m道菜的一个步骤,共有n道菜,每道菜各有xi个步骤,求做完的最短时间. 思路:一道很水的思维题, 根本不需要去 考虑模拟过程 以及先做那道菜(比赛的时候就是这么考 ...

  2. 50道经典的JAVA编程题(汇总)

    这是一次不可思议的编程历程.从2013年的最后一天开始做这份题,中间连续好几天的考试,包括java考试(今天考试的JAVA编程题),直到今天完成了.挺有成就感的...废话不多说了,来电实质性的吧. 全 ...

  3. cf A. Inna and Pink Pony(思维题)

    题目:http://codeforces.com/contest/374/problem/A 题意:求到达边界的最小步数.. 刚开始以为是 bfs,不过数据10^6太大了,肯定不是... 一个思维题, ...

  4. 50道经典的JAVA编程题(46-50)

    50道经典的JAVA编程题(46-50),最后五道题了,这是一个美妙的过程,编程真的能让我忘掉一切投入其中,感觉很棒.今天下午考完微机原理了,大三上学期就这样度过了,这学期算是解放了,可是感觉我还是没 ...

  5. 50道经典的JAVA编程题(41-45)

    50道经典的JAVA编程题(41-45),苦逼的程序猿,晚上睡不着了编程吧~今天坚持做10道题!发现编程能是我快乐...O(∩_∩)O哈哈~能平静我烦乱的心,剩下5道题留到考试完了再做吧!该睡觉了.. ...

  6. 今天考试的JAVA编程题

    今天早上考了java, 题目感觉还不错, 共四道题,有一道定义类的没啥意思就没列出来. 这三道题目还是不错的,特别是第一道,大一上学期学linux的时候,那时还没学C语言呢,准确的来说,还不知道什么是 ...

  7. 50道经典的JAVA编程题(36-40)

    50道经典的JAVA编程题(36-40),今天晚上心情压抑,不爽,继续做题,管它明天考试,我继续我的java,一个周末都在看微机原理看得的很头疼啊~明天该挂科就挂吧,不在乎了~~~ [程序36] Ar ...

  8. 50道经典的JAVA编程题(31-35)

    50道经典的JAVA编程题(31-35),今天考完了java,在前篇博客里面贴出了题了,见:<今天考试的JAVA编程题>.考完了也轻松了,下个星期一还考微机原理呢,啥都不会,估计今天就做到 ...

  9. 50道经典的JAVA编程题(26-30)

    50道经典的JAVA编程题(26-30),这么晚了,早点睡了要,明早8点考java祝我好运吧!!!晚安~ [程序26]Ex26.java(跳过了,好没意思的题啊)题目:请输入星期几的第一个字母来判断一 ...

随机推荐

  1. linux-32bit-内存管理

    一.进程与内存 进程如何使用内存? 毫无疑问所有进程(执行的程序)都必须占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等.不过进程对这些内存的管理方式因内存用途不 ...

  2. 2019牛客暑期多校训练营(第五场)- G subsequence 1

    题目链接:https://ac.nowcoder.com/acm/contest/885/G 题意:给定字符串s,t,求s中满足字典序大于t的子序列的个数. 思路:组合数学+dp.当子序列长度大于m时 ...

  3. Prefix to Infix Conversion

    Infix : An expression is called the Infix expression if the operator appears in between the operands ...

  4. [转帖]如何在VirtualBox中运行macOS Catalina Beta版本

    如何在VirtualBox中运行macOS Catalina Beta版本 secist2019-08-03共2179人围观系统安全 https://www.freebuf.com/articles/ ...

  5. Oracle同时插入多条数据

    INSERT ALL INTO 表名(NAME) VALUES ('tony') INTO 表名(NAME) VALUES ('tony2') INTO 表名(NAME) VALUES ('tony3 ...

  6. 【LOJ】#2985. 「WC2019」I 君的商店

    LOJ#2985. 「WC2019」I 君的商店 一道很神仙的题啊QAQ 居然是智商题--不是乱搞或者是大数据 我们可以用2N问出一个最大值是1 然后对于任意两个值\(x + y\)和\(a\)比较 ...

  7. 将本地镜像上传到Docker镜像仓库

    ⒈在Docker Hub(Docker官方镜像仓库)注册自己的用户名. ⒉在Docker中使用docker login命令登录自己的用户名密码. ⒊使用docker push 镜像名称 上传本地镜像到 ...

  8. C++学习 之 程序的组成部分(部分知识笔记)

    1.预处理器编译指令#include: 预处理器是在程序编译前运行的工具.预处理器编译指令是向预处理器发送的命令,总是以#为标识,include便是其中常见的一种,用于引用文件,比如:iostream ...

  9. Lazy的SDL教程 翻译----Lesson 22 Timing

    原文:http://lazyfoo.net/tutorials/SDL/22_timing/index.php Timing 计时 Last Updated 3/10/14 Another impor ...

  10. hdu4706

    #include<string.h> #include<stdio.h> int main() { int a,b,c,d,i,j,n,m; ][]; ,j=; a<=; ...