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的更多相关文章

  1. [.Net] Excel导入导出各种方式分析

    1.引言 1.1解决哪些问题   现在很多公司用的导出基本上采用的通过gridView导出excel,此种导出存在以下几种问题 1.数据量大的时候有时导出有时会让浏览器卡死,因为导出的excel不是真 ...

  2. java web简单的增删改查

    1.主要的文件,运行结果,运行界面,数据库创建的表等图片. 所要创建的文件和要导入的包: 主页面: 显示界面: 数据库的信息: 删除.查找.修改就不一 一列出来,自己可以运行看看.哈哈 2.接下来我将 ...

  3. Oracle汉字转拼音package

    --函数GetHzFullPY(string)用于获取汉字字符串的拼音 --select GetHzFullPY('中华人民共和国') from dual; --返回:ZhongHuaRenMinGo ...

  4. ***CodeIgniter集成微信支付(转)

    微信支付Native扫码支付模式二之CodeIgniter集成篇  http://www.cnblogs.com/24la/p/wxpay-native-qrcode-codeigniter.html ...

  5. SQLite XXTea加密学习

    这几天优化数据库读写,移植了xxtea加密到最新的数据库sqlite 3.12.2里,一些好文章放在这里.移植后,数据库读写性能异常优秀! 这几天又发现,数据库还是发生了无法写入情况,数据库崩溃掉了. ...

  6. Json与javaBean之间的转换工具类

    /**  * Json与javaBean之间的转换工具类  *  * {@code 现使用json-lib组件实现  *    需要  *     json-lib-2.4-jdk15.jar  * ...

  7. nio加强服务端并发

    究了一下Android推送,方式很多,比如用框架或者用第三方服务,在此并不讨论个中优劣.抱着学习的态度,本人不太喜欢用一些现成的东西,所以自己动手实现了一套简单的推送机制.使用TCP长连接,完成服务器 ...

  8. C#操作内存读写方法的主要实现代码

    C#操作内存读写方法是什么呢?让我们来看看具体的实例实现: using System.Runtime.InteropServices; using System.Text; publicclass F ...

  9. 在AWS中创建NAT节点

    NAT, Network Address Translation,即网络地址转换.当内部网络的主机想要访问外网,但是又不想直接暴露给公网,可以通过NAT节点来访问外网.这样做有两个好处,第一是内网的主 ...

随机推荐

  1. 云服务器上利用Docker部署Django项目

    转载别人的,请看下面链接 云服务器上利用Docker部署Django项目

  2. bzoj5219 [Lydsy2017省队十连测] 最长路径

    题意: 做法来自 首先竞赛图缩点后是一条链,\(1\)号节点在开头的那个\(SCC\)中,因此从\(1\)号节点出发的最长链即为\(1\)号节点所在的\(SCC\)的大小\(+1\)号节点拓扑序之后的 ...

  3. php 交换值

    使用异或和第三参数比较 结果比较:(其中之一) 异或:执行时间在 0.035-0.085之间 第三参数:执行时间在 0.035-0.050之间 结论:使用第三参数执行效率更高/更稳定

  4. centos6和centos7的防火墙基本命令

    一.centos6: 1.firewall的基本启动/停止/重启命令 $查看防火墙状态: service iptables status (/etc/init.d/iptables status) $ ...

  5. 使用pymysql模块进行封装,自动化不可或缺的数据库校验

    import pymysql class HandleMysql: ''' 定义一个mysql处理类 ''' def __init__(self, hostname, username, passwo ...

  6. WPF图片,DataGrid等实现圆角

    <Grid HorizontalAlignment="Center" VerticalAlignment="Center"> <Grid.Ro ...

  7. 服务端性能测试技能tree

    ALL: Left: Right: 摘抄一下(觉得不错) 以下来自百度百科 ---- 软件性能测试 软件性能测试是在交替进行负荷和强迫测试时常用的术语.理想的“软件性能测试”(和其他类型的测试)应在需 ...

  8. Create an XAF Application 创建一个XAF应用程序

    This topic describes how to use the Solution Wizard to create XAF applications and specify a connect ...

  9. ABP进阶教程7 - 功能按钮

    点这里进入ABP进阶教程目录 下载插件 打开Datatables官网(https://datatables.net/download/) 勾选Extensions/Buttons,下载插件,复制到JD ...

  10. [20190530]ORACLE 18c - ALTER SEQUENCE RESTART.txt

    [20190530]ORACLE 18c - ALTER SEQUENCE RESTART.txt --//以前遇到要重置或者调整seq比较麻烦,我有时候采用比较粗暴的方式就是删除重建.--//18c ...