1.Reverse Words in a String

public class Solution {
public String reverseWords(String s) {
String result[] = s.trim().split(" +");
String reverseResult[] = new String[result.length];
String reverse = "";
if(result.length>0){
for(int i = 0;i<result.length;i++){
reverseResult[i] = result[result.length-1-i].trim();
reverse += reverseResult[i].trim()+" ";
}
}
return reverse.trim();
}
}

2.Evaluate Reverse Polish Notation

public class Solution {
public int evalRPN(String[] tokens) {
List<String> numList = new ArrayList<String>();
for(int i = 0;i<tokens.length;i++){
if(tokens[i].equals("+")){
String newNum = String.valueOf(Integer.valueOf(numList.get(numList.size()-2))+Integer.valueOf(numList.get(numList.size()-1)));
numList.remove(numList.size()-2);
numList.remove(numList.size()-1);
numList.add(newNum);
}else if(tokens[i].equals("-")){
String newNum = String.valueOf(Integer.valueOf(numList.get(numList.size()-2))-Integer.valueOf(numList.get(numList.size()-1)));
numList.remove(numList.size()-2);
numList.remove(numList.size()-1);
numList.add(newNum);
}else if(tokens[i].equals("*")){
String newNum = String.valueOf(Integer.valueOf(numList.get(numList.size()-2))*Integer.valueOf(numList.get(numList.size()-1)));
numList.remove(numList.size()-2);
numList.remove(numList.size()-1);
numList.add(newNum);
}else if(tokens[i].equals("/")){
String newNum = String.valueOf(Integer.valueOf(numList.get(numList.size()-2))/Integer.valueOf(numList.get(numList.size()-1)));
numList.remove(numList.size()-2);
numList.remove(numList.size()-1);
numList.add(newNum);
}else{
numList.add(tokens[i]);
} }
return Integer.valueOf(numList.get(0)); } }

3.Max Points on a Line(这个题真是很蛋疼啊,开始时真没想到还会包括出现重复点的情况,导致后来写的有点晕了=.=)

/**
* Definition for a point.
* class Point {
* int x;
* int y;
* Point() { x = 0; y = 0; }
* Point(int a, int b) { x = a; y = b; }
* }
*/
public class Solution {
public int maxPoints(Point[] points) { List<Integer> numlist = new ArrayList<Integer>();
HashMap<String, Integer> map;
HashMap<String, Integer> mapPoint;
Integer max = 0;
if (points.length == 1) {
max = 1;
}
for (int i = 0; i < points.length; i++) {
map = new HashMap<String, Integer>();
mapPoint = new HashMap<String, Integer>();
for (int j = i + 1; j < points.length; j++) {
String kString = "";
if ((points[i].x - points[j].x) != 0) {
if (points[i].y - points[j].y == 0) {
kString = String.valueOf(0);
} else {
float k = (float) (points[i].y - points[j].y)
/ (float) (points[i].x - points[j].x);
kString = String.valueOf(k);
}
if (map.containsKey(kString)) {
int num = map.get(kString) + 1;
map.remove(kString);
map.put(kString, num);
} else {
map.put(kString, 2);
}
} else if ((points[i].y - points[j].y) != 0
&& (points[i].x - points[j].x) == 0) {
kString = "no";
if (map.containsKey(kString)) {
int num = map.get(kString) + 1;
map.remove(kString);
map.put(kString, num);
} else {
map.put(kString, 2);
}
} else {
kString = "re";
if (mapPoint.containsKey(kString)) {
int num = mapPoint.get(kString) + 1;
mapPoint.remove(kString);
mapPoint.put(kString, num);
} else {
mapPoint.put(kString, 2);
}
} }
if (!map.isEmpty()) {
for (String key : map.keySet()) {
if (mapPoint.containsKey("re")
&& map.get(key) + mapPoint.get("re")
- 1 > max){
max = map.get(key) + mapPoint.get("re")
- 1;
} else if (map.get(key) > max) {
max = map.get(key);
} }
}
else {
if (mapPoint.containsKey("re")
&& mapPoint.get("re") > max) {
max = mapPoint.get("re");
}
}
} return max; }
}

算法练习之leetcode系列1-3的更多相关文章

  1. Leetcode系列之两数之和

    Leetcode系列之两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标.你可以假设每种输入只会对应一个答案.但是,你 ...

  2. 【算法题 14 LeetCode 147 链表的插入排序】

    算法题 14 LeetCode 147 链表的插入排序: 解题代码: # Definition for singly-linked list. # class ListNode(object): # ...

  3. leetcode 系列文章目录

    leetcode 系列文章目录 0. 两数之和1. 两数相加 2. 无重复字符的最长子串 3. 寻找两个有序数组的中位数 4. 最长回文子串 5. Z 字形变换 6. 整数反转 7. 字符串转换整数 ...

  4. C#刷遍Leetcode系列连载 索引

    C#刷遍Leetcode系列文章 索引 索引(陆续发布中,请保持关注) C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介 C#刷遍Leetcode面试题系列连载(2): No.38 - ...

  5. Leetcode系列-Search in Rotated Sorted Array

    做Leetcode题有一段时间了,但都是断断续续的,到现在才做了30题左右,感觉对自己来说还是有点难度的.希望自己能继续坚持下去,在校招前能解决超过一百题吧. 其实这些题就是用来训练你的解题思路的,做 ...

  6. Manacher算法学习笔记 | LeetCode#5

    Manacher算法学习笔记 DECLARATION 引用来源:https://www.cnblogs.com/grandyang/p/4475985.html CONTENT 用途:寻找一个字符串的 ...

  7. 程序员进阶之算法练习:LeetCode专场

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由落影发表 前言 LeetCode上的题目是大公司面试常见的算法题,今天的目标是拿下5道算法题: 题目1是基于链表的大数加法,既考察基本 ...

  8. 最长回文子串 C++实现 java实现 leetcode系列(五)

    给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注意: &qu ...

  9. 【算法题目】Leetcode算法题思路:两数相加

    在LeetCode上刷了一题比较基础的算法题,一开始也能解出来,不过在解题过程中用了比较多的if判断,看起来代码比较差,经过思考和改进把原来的算法优化了. 题目: 给出两个 非空 的链表用来表示两个非 ...

随机推荐

  1. 一文说尽C++赋值运算符重载函数(operator=)

    写在前面: 关于C++的赋值运算符重载函数(operator=),网络以及各种教材上都有很多介绍,但可惜的是,内容大多雷同且不全面.面对这一局面,在下在整合各种资源及融入个人理解的基础上,整理出一篇较 ...

  2. \r与\n的区别

    \r : return 到当前行的最左边. \n: newline 向下移动一行,并不移动左右. Linux中\n表示回车+换行: Windows中\r\n表示回车+换行. Mac中\r表示回车+换行 ...

  3. 换个新的思路 代替解压jar包 例证:wechat4j 框架中的templateMsg类

    很多朋友在写java的程序的时候都喜欢用第三方的jar包和框架,有可能遇到jar包中的内容已经跟不上官方开发者文档的更新,导致部分内容出错了,这个时候可能就要放弃这个jar的使用,但是这个jar中的其 ...

  4. 记一次python编码错误

    摘要: 断断续续写python一段时间了,让我说python最令我头疼的问题,莫过于编码问题.最近做大论文,使用python再次出现编码报错.错误如下: "UnicodeEncodeErro ...

  5. 腾讯云>>云通信>>TLS后台API在mac上JAVA DEMO搭建

    1.相关文档地址 2.相关demo代码 代码部分作了修改,使用了commons-io中的IOUtils.toString简化了io操作 public class Demo { public stati ...

  6. slideDoor(学习某编程网站的,仅作记录和学习)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. android面试题

    1. 请描述一下Activity 生命周期. 答: 如下图所示.共有七个周期函数,按顺序分别是: onCreate(), onStart(), onRestart(), onResume(), onP ...

  8. Android中Context详解

    大家好,  今天给大家介绍下我们在应用开发中最熟悉而陌生的朋友-----Context类 ,说它熟悉,是应为我们在开发中时刻的在与它打交道,例如:Service.BroadcastReceiver.A ...

  9. main函数的详解

    public : 公共的. 权限是最大,在任何情况下都可以访问. 原因: 为了保证让jvm在任何情况下都可以访问到main方法. static: 静态.静态可以让jvm调用main函数的时候更加的方便 ...

  10. Linux安装时内存如何分区的相关问题

    Linux系统安装时内存如何分区:Linux系统必须的分区是根分区(/)和swap交换分区.普通用户一般分三个区,一个根分区(/),一个家目录(home分区),一个交换分区(swap分区),以80G的 ...