刷题-CC150-Java实现
8.1
1.1 字符串互异
确定一个字符串的所有字符是否全都不同。
- 方法一:逐字符比较的方法。时间复杂度:O(n2)。
import java.util.*;public class Different {public boolean checkDifferent(String iniString) {// write code hereif (iniString.length()>256)return false;for (int i=0; i<iniString.length()-1; i++) {for (int j=i+1; j<iniString.length(); j++) {if (iniString.charAt(i) == iniString.charAt(j))return false;}}return true;} }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 方法二:
import java.util.*;public class Different {public boolean checkDifferent(String iniString) {// write code hereif (iniString.length()>256)return false;boolean[] char_set = new boolean[256];for (int i=0; i<iniString.length(); i++) {char val = iniString.charAt(i);if ((val < 0) ||(val > 255)) //检查输入return false;if (char_set[val])return false;char_set[val] = true;}return true;} }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
1.2 原串翻转
翻转一个给定的字符串(可以使用单个过程变量)。
使用Array实现
import java.util.*;public class Reverse {public String reverseString(String iniString) {// write code herechar[] strArray = iniString.toCharArray();int low = 0, high = iniString.length()-1;while (low < high) {char tmp = strArray[low];strArray[low] = strArray[high];strArray[high] = tmp;low++;high--;}String tmpString = new String(strArray);return tmpString;} }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
使用StringBuilder
import java.util.*;public class Reverse {public String reverseString(String iniString) {// write code hereStringBuilder sb = new StringBuilder(iniString);int low = 0, high = sb.length()-1;while (low < high) {char tmp = sb.charAt(low);sb.setCharAt(low, sb.charAt(high));sb.setCharAt(high, tmp);low++;high--;} return sb.toString();} }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
1.3
确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。
import java.util.*;public class Same {public boolean checkSam(String stringA, String stringB) {// 优化 - 如果两个字符串长度不等,一定不可能if (stringA.length() != stringB.length())return false;return sortMy(stringA).equals(sortMy(stringB));}public String sortMy(String s) {char[] as = s.toCharArray();java.util.Arrays.sort(as);return new String(as);} }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
1.4 空格替换
空格替换
import java.util.*;public class Replacement {public String replaceSpace(String iniString, int length) {return iniString.replaceAll(" ", "%20");} }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
1.5 基本字符串压缩
基本字符串压缩
import java.util.*;public class Zipper {public String zipString(String iniString) {// write code hereString mystr = "";char last = iniString.charAt(0);int count = 1;for (int i=1; i<iniString.length(); i++) {if (iniString.charAt(i)==last) {count++;} else {mystr += last + "" + count;last = iniString.charAt(i);count = 1;}}mystr += last + "" + count;if (mystr.length() > iniString.length())return iniString;else {return mystr;}} }
刷题-CC150-Java实现相关推荐
- 2021新年算法小专题—2.股票买卖利润刷题(Java)
本篇是股票买卖问题的更多题解,在上一篇文章中我们已经介绍了这一题型,实际上是一类dp问题,我们用自动机的思想去解决,在上一篇中我们以一道限定只买卖一次股票的题目为例进行了讲解,文章链接.下面我们继续完 ...
- 【牛客刷题】java编程笔试题(更新)
目录 统计出现次数top n的字符串 求最后一个有效字符下标 复杂链表的复制 删除链表中重复的结点 删除链表的节点 二叉树的深度 二叉搜索树的第k个节点 二叉树的镜像 判断是不是平衡二叉树 二叉搜索树 ...
- LeetCode算法刷题目录 (Java)
目录 1.数学基础 1.1.位运算 1.2.其它 2.数据结构 2.1.线性表 2.1.1.数组(双指针) 2.1.2.链表(双指针) 2.1.3.栈 2.1.4.队列 2.1.5.字符串 2.1.6 ...
- PAT刷题 (Java语言)
1001. A+B Format (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Calculate ...
- 牛客网刷题(纯java题型 31~60题)
重写Override应该满足"三同一大一小" 三同:方法名相同,参数列表相同,返回值相同或者子类的返回值是父类的子类(这一点是经过验证的) 一大: 子类的访问修饰符比父类开放 一小 ...
- 牛客网 java刷题_牛客网刷题(纯java题型 1~30题)
应该是先extend,然后implement class test extends A implements B { public static void main(String[] args) { ...
- 剑指offer刷题报告(Java)
文章目录 1. 二维数组中的查找 2. 替换空格 3. 从尾到头打印链表 4. 重建二叉树 5. 用两个栈实现队列 6. 旋转数组的最小数字 7.斐波那契数列 8. 跳台阶 9. 变态跳台阶 10.矩 ...
- 牛客网刷题(纯java题型 181~210题)
jdk 1.8中 所的种类汇总: 1,自旋锁 2,阻塞锁,被阻塞的线程,不会去争夺锁 3,可重入锁(ReentrantLock) 4,读写锁(ReadWriteLock) 5,互斥锁 6,悲观锁,不相 ...
- 牛客网刷题(纯java题型 211~240题)
抽象类,就是用来extends的 java.lang.Number是一个抽象类,里面全部都是抽象方法 static 方法不能被继承,不能被子类override,不能与abstract一起修饰方法 ab ...
- Leetcode刷题记录[java]——561 Array Partition I
一.前言 二.题561 Array Partition I Given an array of 2n integers, your task is to group these integers in ...
最新文章
- C语言再学习 -- 字符串和字符串函数
- js字符串替换_浅析Vue的生命周期以及JS异步
- Node.js HTTP 使用详解
- 2019 牛客多校第9场 B	Quadratic equation(二次剩余)
- CSS 的三个特性:层叠性、继承性、优先级
- TermuxArch安装java_高级终端Termux安装并使用
- UGUI 在面板经常使用的表格布局制作
- office2016风格后台管理系统html模板下载-uimaker设计
- JMETER badboy 下载及安装
- 新手阿里云服务器操作指南(图文教程)
- Git报错:/c/Users/zhouy/AppData/Roaming/npm/hexo: line 12: node: command not found
- Cadence: 各软件业务
- RTC与WebRTC有什么区别?
- mysql中explain执行结果各个字段的意思
- 安全问题层出不穷 加密手机悄然兴起
- 打造企业级云深度学习平台——小米云深度学习平台的架构设计与实现
- ThinkPad 声卡出现未安装任何音频输出设备
- 【Nessus安装、使用】
- 计算机为什么不读500g硬盘,为什么我的500g硬盘的实际容量只有46 5. 1G
- mysql本地localhost连接不上
热门文章
- spring core源码解读之ASM4用户手册翻译之一asm简介
- FastJson解析对象及对象数组--项目经验
- 细讲 | Attention Is All You Need
- List list= new ArrayList为什么这样写 接口引用指向实现类的对象
- GitHub是如何征服Google、微软和其它公司的
- html5 progress css,CSS content: attr() on HTML5 progress doesn't work
- 并发编程-21J.U.C组件拓展之Future和FutureTask
- Linux-使用 Find 命令找到那些需要清理的文件
- 爬虫学习笔记(二)——使用 requests 爬取百度图片
- mysql 秀出两个相关联的表中满足条件的内容_这六个 MySQL 死锁案例,能让你理解死锁的原因!...