Java编程:合并字符串并排序:判断丑陋数:找到最多含有n个不同字符的子串的最长长度
2016-12-14 13:26
375 查看
[java] view
plain copy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/9e12f1d3e499fc949c886e7c9e0484f9)
package com.baiyi;
import java.util.*;
public class TestUtils
{
/**
* 第一题:合并字符串并排序
*
* @param str1 字符串
* @param str2 字符串
* @return 字符串
*/
public static String comSort(String str1, String str2) throws Exception
{
// 请在此添加代码
int[] a=new int[26];
for(int i=0;i<26;i++)
{
a[i]=0;
}
for(int i=0;i<str1.length();i++)
{
a[str1.charAt(i)-'a']=1;
}
for(int i=0;i<str2.length();i++)
{
a[str2.charAt(i)-'a']=1;
}
String str="";
int sum=0;
for(int i=0;i<26;i++)
{
if(a[i]!=0)
sum++;
}
char[] b=new char[sum];
int j=0;
char i=0;
for(;i<26;i++)
{
if(a[i]!=0)
{
b[j]=(char) ('a'+i);
j++;
}
}
str =String.valueOf(b);
return str;
}
/*
第二题:找到最多含有n个不同字符的子串的最长长度
*/
public static int change(String s,int n)
{
LinkedList<Character> list = new LinkedList<Character>();
int sum=1,max=0;
list.add(s.charAt(0));
for(int i=1;i<s.length();i++)
{
System.out.println(list.toString());
if(list.contains(s.charAt(i)))
{
list.add(s.charAt(i));
}
else
{
if(sum==n)
{
if(list.size()>max)
max=list.size();
list.removeFirst();
list.add(s.charAt(i));
}
else
{
list.add(s.charAt(i));
sum++;
}
}
}
return max;
}
/*
第三题:判断丑陋数,质因数只有2,3,5的数是丑陋数
*/
public static boolean isUgly(int num)
{
if (num <= 0)
return 0;
while (num % 2 == 0)
num /= 2;
while (num % 3 == 0)
num /= 3;
while (num % 5 == 0)
num /= 5;
return num==1?1:0;
}
}
}
plain copy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
package com.baiyi;
import java.util.*;
public class TestUtils
{
/**
* 第一题:合并字符串并排序
*
* @param str1 字符串
* @param str2 字符串
* @return 字符串
*/
public static String comSort(String str1, String str2) throws Exception
{
// 请在此添加代码
int[] a=new int[26];
for(int i=0;i<26;i++)
{
a[i]=0;
}
for(int i=0;i<str1.length();i++)
{
a[str1.charAt(i)-'a']=1;
}
for(int i=0;i<str2.length();i++)
{
a[str2.charAt(i)-'a']=1;
}
String str="";
int sum=0;
for(int i=0;i<26;i++)
{
if(a[i]!=0)
sum++;
}
char[] b=new char[sum];
int j=0;
char i=0;
for(;i<26;i++)
{
if(a[i]!=0)
{
b[j]=(char) ('a'+i);
j++;
}
}
str =String.valueOf(b);
return str;
}
/*
第二题:找到最多含有n个不同字符的子串的最长长度
*/
public static int change(String s,int n)
{
LinkedList<Character> list = new LinkedList<Character>();
int sum=1,max=0;
list.add(s.charAt(0));
for(int i=1;i<s.length();i++)
{
System.out.println(list.toString());
if(list.contains(s.charAt(i)))
{
list.add(s.charAt(i));
}
else
{
if(sum==n)
{
if(list.size()>max)
max=list.size();
list.removeFirst();
list.add(s.charAt(i));
}
else
{
list.add(s.charAt(i));
sum++;
}
}
}
return max;
}
/*
第三题:判断丑陋数,质因数只有2,3,5的数是丑陋数
*/
public static boolean isUgly(int num)
{
if (num <= 0)
return 0;
while (num % 2 == 0)
num /= 2;
while (num % 3 == 0)
num /= 3;
while (num % 5 == 0)
num /= 5;
return num==1?1:0;
}
}
}
相关文章推荐
- [Google] 字符串中求最长的子串,该子串最多只含有2个不同的字符
- 【codeforces 676C】 【尺取法】【从一个ab序列中最多改变k个字符找到最长的连续a子串或者b子串长度】
- 找到含有n个不同字符的子串的最大长度
- 从一个ab序列中最多改变k个字符找到最长的连续a子串或者b子串长度.【尺取法】
- (字符串哈希表)找到字符串中不重复出现字符的最长子串长度
- 编程:判断一个给定字符串中字符全都不同java
- [LeetCode] Longest Substring with At Most Two Distinct Characters 最多有两个不同字符的最长子串
- 给出两个字符串,找到最长公共子串,并返回其长度,java实现
- 【Codeforces Round 354 (Div 2)C】【前缀和二分or双指针】Vasya and String ab序列最多改变k位置的最长同字符子串长度
- 求一字符串最长不重复字符子串的长度【Java 版】
- 给定一个字符串,找到最长的子串的长度没有重复字符
- [LeetCode] 159. Longest Substring with At Most Two Distinct Characters 最多有两个不同字符的最长子串
- [LeetCode] 340. Longest Substring with At Most K Distinct Characters 最多有K个不同字符的最长子串
- 算法:求最多有k个不同字符的最长子字符串的长度
- [leetcode]获取字符串中字符不重复的最长子串的长度
- 找到字符串的最长无重复字符子串
- 每日算法题三道之给定一个字符串求k个不同字符的最长子串
- Java实现给定任一字符串,长度为任意,要求找出其出现次数最多的字符及其出现次数。
- 【HDU5559 2015合肥赛区H】【观察找规律 构造】Frog and String 用最多k个字符构造长度为n的m不同回文串的串
- 【Codeforces Round 334 (Div 2)C】【脑洞】Alternative Thinking 最多反转一个区间使得最长跳跃子串的长度尽可能长