1. 问题:实现一个算法,确定一个字符串 s 的所有字符是否全都不同。
示例 1:
输入: s = "leetcode"
输出: false
示例 2:
输入: s = "abc"
输出: true
限制:
0 <= len(s) <= 100
如果你不使用额外的数据结构,会很加分。
2. 解题思路
我想到的是Set集合底层实现的思路来解题的,但是不使用而外的数据结构,暂时还在思考中。
3. 代码介绍
class Solution {
private static final Object PRESENT = new Object();
public boolean isUnique(String astr) {
Map<Character, Object> map = new HashMap<>();
int len = astr.length();
for (int i = 0; i < len; i++) {
char at = astr.charAt(i);
//判断是否重复
boolean b = isRepeat(at, map);
if (!b) {
return false;
}
}
return true;
}
private static boolean isRepeat(char at, Map<Character, Object> map) {
return map.put(at, PRESENT) == null;
}
}
面试题 16.07. 最大数值
1. 编写一个方法,找出两个数字a和b中最大的那一个。不得使用if-else或其他比较运算符。
示例:
输入: a = 1, b = 2
输出: 2
2. 解题思路
我想到的是java基础中三元运算符来解题的,也可以直接使用max函数来解题。
3. 代码介绍
题解1 :
class Solution {
public int maximum(int a, int b) {
return (a >= b) ? a : b;
}
}
题解2:
class Solution {
public int maximum(int a, int b) {
return Math.max(a, b);
}
}
1. 实现一种算法,删除单向链表中间的某个节点(即不是第一个或最后一个节点),假定你只能访问该节点。
示例:
输入:单向链表a->b->c->d->e->f中的节点c
结果:不返回任何数据,但该链表变为a->b->d->e->f
2. 解题思路
通过数据结构中学习过的对于单链表删除节点的操作来处理就可以。
3. 代码介绍
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public void deleteNode(ListNode node) {
node.val = node.next.val;
node.next = node.next.next;
}
}