给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
示例 1:
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
class Solution
{
//两个指针,一个指针由前向后遍历,一个指针由后向前遍历
public int[] twoSum(int[] nums, int target)
{
int i;
int res[]=new int[2];
for(i=0;i<nums.length;i++)
{
for(int j=nums.length-1;j>i;j--)
{
if(nums[i]+nums[j]==target)
{
res[0]=i;
res[1]=j;
return res;
}
}
}
return res;
}
}
找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
示例 1:
输入:
[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3
class Solution {
public int findRepeatNumber(int[] nums) {
//数字的范围是0~n-1
int res[]=new int[nums.length];
for(int i=0;i<nums.length;i++)
{
res[nums[i]]++;
}
for(int j=0;j<res.length;j++)
{
if(res[j]>1)
{
return j;
}
}
return -1;
}
}
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = “We are happy.”
输出:“We%20are%20happy.”
class Solution {
public String replaceSpace(String s) {
s=s.replace(" ", "%20");
return s;
}
}
如果真是要手动替换的话,可以先统计空格的个数,然后开辟一个新空间,新空间的大小是原来的字符串长度(length)加上空格的个数(num)*2,然后定义两个指针(p,q),p指向新空间的末尾,q指向原来字符串的末尾,然后每当q指向的是空格,那么p就从后往前依次添加‘0’、‘2’、‘%’.
class Solution {
public String replaceSpace(String s) {
if (s == null || s.length() <= 0)
{
return s;
}
//统计空格的个数
int count=0;
for(int i=0;i<s.length();i++)
{
if(s.charAt(i)==' ')
{
count++;
}
}
//新空间大小
int newSize=s.length()+count*2;
char chars[]=new char[newSize];
int p=newSize-1;
int q=s.length()-1;
while(p>=q && p>=0 && q>=0)
{
if(s.charAt(q)==' ')
{
chars[p--]='0';
chars[p--]='2';
chars[p--]='%';
}
else
{
chars[p--]=s.charAt(q);
}
q--;
}
String res="";
for(char item:chars)
{
res+=item;
}
return res;
}
}