<String> 186 293 294 249
186. Reverse Words in a String II
先反转整个字符串,再反转每个单词(调整顺序也可以)
反转单词的时候:当 j 指到最后一个字符的时候,或者 j 的下一个指向空格,则反转该单词。
class Solution {
public void reverseWords(char[] s) {
if(s == null || s.length == 0){
return;
}
reverse(s, 0, s.length - 1);
int i = 0, j = 0;
while(j < s.length){
if(j == s.length - 1 || s[j + 1] == ' '){
reverse(s, i, j);
i = j + 2;
}
j++;
}
}
void reverse(char[] str, int i, int j){
while(i < j){
char c = str[i];
str[i++] = str[j];
str[j--] = c;
}
}
}
293. Flip Game
把两个连续的++变为--,遍历所有情况即可。当 i 和 i - 1都为 +时,添加 -。
class Solution {
public List<String> generatePossibleNextMoves(String s) {
List<String> list = new ArrayList<String>();
for(int i = 1; i < s.length(); i++){
if(s.charAt(i - 1) == '+' && s.charAt(i) == '+'){
list.add(s.substring(0, i - 1) + "--" + s.substring(i + 1, s.length()));
}
}
return list;
}
}
294. Flip Game II
题眼:Write a function to determine if the starting player can guarantee a win.
题目问的是,1p是否能够保证在一种情况下获胜。
用递归,遍历所有可以出现的第一种情况。在这种情况下如果 !canWin表示对手怎样都不能赢,则1p赢。
如果没有一种情况让1p赢,则他输。
时间复杂度:(n - 1) x (n - 3) x (n - 5) x ..., = O(n!!)
class Solution {
public boolean canWin(String s) {
if(s == null || s.length() < 2) return false;
for(int i = 0; i < s.length() - 1; i++){
if(s.charAt(i) == '+' && s.charAt(i + 1) == '+'){
String t = s.substring(0, i) + "--" + s.substring(i + 2, s.length());
if(!canWin(t)){
return true;
}
}
}
return false;
}
}
249. Group Shifted Strings
如果是同类型的字符串,则每个字符串的字母与首字母的距离都是相同的。
ab : offset = a - 'a' = 0,
a - offset = a, key = a
b - offset = b。 key = ab
cd :offset = c - 'a' = 2,
c - offset = a, key = a
d - offset = 1 = b。 key = ab
每个单词的首字母与a的距离设为这个单词的偏移量offset,第二个字母 - offset, 第三个字母 - offset,依此类推,得到的字符串设为key值。如果这个单词key在map里有则直接添加进去,否则添加这个key值。
最后把map转移到结果里。
class Solution {
public List<List<String>> groupStrings(String[] strings) {
List<List<String>> result = new ArrayList<>();
Map<String, List<String>> map = new HashMap<>();
for(String str : strings){
int offset = str.charAt(0) - 'a';
String key = "";
for(int i = 0; i < str.length(); i++){
char c = (char)(str.charAt(i) - offset);
if(c < 'a'){
c += 26;
}
key += c;
}
if(!map.containsKey(key)){
List<String> list = new ArrayList<>();
map.put(key, list);
}
map.get(key).add(str);
}
for(String key : map.keySet()){
List<String> list = map.get(key);
result.add(list);
}
return result;
}
}
<String> 186 293 294 249的更多相关文章
- [.Net] Excel导入导出各种方式分析
1.引言 1.1解决哪些问题 现在很多公司用的导出基本上采用的通过gridView导出excel,此种导出存在以下几种问题 1.数据量大的时候有时导出有时会让浏览器卡死,因为导出的excel不是真 ...
- java web简单的增删改查
1.主要的文件,运行结果,运行界面,数据库创建的表等图片. 所要创建的文件和要导入的包: 主页面: 显示界面: 数据库的信息: 删除.查找.修改就不一 一列出来,自己可以运行看看.哈哈 2.接下来我将 ...
- Oracle汉字转拼音package
--函数GetHzFullPY(string)用于获取汉字字符串的拼音 --select GetHzFullPY('中华人民共和国') from dual; --返回:ZhongHuaRenMinGo ...
- ***CodeIgniter集成微信支付(转)
微信支付Native扫码支付模式二之CodeIgniter集成篇 http://www.cnblogs.com/24la/p/wxpay-native-qrcode-codeigniter.html ...
- SQLite XXTea加密学习
这几天优化数据库读写,移植了xxtea加密到最新的数据库sqlite 3.12.2里,一些好文章放在这里.移植后,数据库读写性能异常优秀! 这几天又发现,数据库还是发生了无法写入情况,数据库崩溃掉了. ...
- Json与javaBean之间的转换工具类
/** * Json与javaBean之间的转换工具类 * * {@code 现使用json-lib组件实现 * 需要 * json-lib-2.4-jdk15.jar * ...
- nio加强服务端并发
究了一下Android推送,方式很多,比如用框架或者用第三方服务,在此并不讨论个中优劣.抱着学习的态度,本人不太喜欢用一些现成的东西,所以自己动手实现了一套简单的推送机制.使用TCP长连接,完成服务器 ...
- C#操作内存读写方法的主要实现代码
C#操作内存读写方法是什么呢?让我们来看看具体的实例实现: using System.Runtime.InteropServices; using System.Text; publicclass F ...
- 在AWS中创建NAT节点
NAT, Network Address Translation,即网络地址转换.当内部网络的主机想要访问外网,但是又不想直接暴露给公网,可以通过NAT节点来访问外网.这样做有两个好处,第一是内网的主 ...
随机推荐
- 云服务器上利用Docker部署Django项目
转载别人的,请看下面链接 云服务器上利用Docker部署Django项目
- bzoj5219 [Lydsy2017省队十连测] 最长路径
题意: 做法来自 首先竞赛图缩点后是一条链,\(1\)号节点在开头的那个\(SCC\)中,因此从\(1\)号节点出发的最长链即为\(1\)号节点所在的\(SCC\)的大小\(+1\)号节点拓扑序之后的 ...
- php 交换值
使用异或和第三参数比较 结果比较:(其中之一) 异或:执行时间在 0.035-0.085之间 第三参数:执行时间在 0.035-0.050之间 结论:使用第三参数执行效率更高/更稳定
- centos6和centos7的防火墙基本命令
一.centos6: 1.firewall的基本启动/停止/重启命令 $查看防火墙状态: service iptables status (/etc/init.d/iptables status) $ ...
- 使用pymysql模块进行封装,自动化不可或缺的数据库校验
import pymysql class HandleMysql: ''' 定义一个mysql处理类 ''' def __init__(self, hostname, username, passwo ...
- WPF图片,DataGrid等实现圆角
<Grid HorizontalAlignment="Center" VerticalAlignment="Center"> <Grid.Ro ...
- 服务端性能测试技能tree
ALL: Left: Right: 摘抄一下(觉得不错) 以下来自百度百科 ---- 软件性能测试 软件性能测试是在交替进行负荷和强迫测试时常用的术语.理想的“软件性能测试”(和其他类型的测试)应在需 ...
- Create an XAF Application 创建一个XAF应用程序
This topic describes how to use the Solution Wizard to create XAF applications and specify a connect ...
- ABP进阶教程7 - 功能按钮
点这里进入ABP进阶教程目录 下载插件 打开Datatables官网(https://datatables.net/download/) 勾选Extensions/Buttons,下载插件,复制到JD ...
- [20190530]ORACLE 18c - ALTER SEQUENCE RESTART.txt
[20190530]ORACLE 18c - ALTER SEQUENCE RESTART.txt --//以前遇到要重置或者调整seq比较麻烦,我有时候采用比较粗暴的方式就是删除重建.--//18c ...