首页 > 编程语言 >算法总结

算法总结

时间:2022-08-16 22:23:57浏览次数:83  
标签:总结 String strs public 算法 new order 字典

今天放几个关于字符串的算法题

package com.chenghaixiang.jianzhi2.day11;

import java.util.*;

/**
 * @author 程海翔
 * @school 石家庄铁道大学
 */
public class Office033 {
}
//给定一个字符串数组 strs ,将 变位词 组合在一起。 可以按任意顺序返回结果列表。
//
//注意:若两个字符串中每个字符出现的次数都相同,则称它们互为变位词。

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        Map<String,List<String>> map=new HashMap<>();
        for (String str:strs){
            char[] chars=str.toCharArray();
            //排序
            Arrays.sort(chars);
            String key=new String(chars);
            List<String> list = map.getOrDefault(key, new ArrayList<String>());
            list.add(str);
            map.put(key, list);
        }
        return new ArrayList<List<String>>(map.values());


    }
}
View Code
package com.chenghaixiang.jianzhi2.day11;

/**
 * @author 程海翔
 * @school 石家庄铁道大学
 */
public class Office034 {
    public static void main(String[] args) {
        String[] strings;
        strings= new String[]{"hello", "leetcode"};
        Solution01 solution01=new Solution01();
        String order = "hlabcdefgijkmnopqrstuvwxyz";
        solution01.isAlienSorted(strings,order);
    }
}
//某种外星语也使用英文小写字母,但可能顺序 order 不同。字母表的顺序(order)是一些小写字母的排列。
//
//给定一组用外星语书写的单词 words,以及其字母表的顺序 order,只有当给定的单词在这种外星语中按字典序排列时,返回 true;否则,返回 false。

//题目简单解释就是比较字符串数组中,两两字符串每个位置的字符是否符合字典顺序
class Solution01 {
    public boolean isAlienSorted(String[] words, String order) {
        int[] index=new int[26];
        //将字典添加进数组
        for(int i=0;i<order.length();++i){
            //各个字符所在字符串的位置
            index[order.charAt(i)-'a']=i;
        }
        //遍历字符串数组,从第1个和第2个开始比较
        for(int i=1;i<words.length;i++){
            boolean vaild=false;
            //两个字符串其中一个到结尾就结束遍历
            for(int j=0;j<words[i-1].length()&&j<words[i].length();j++){
                //从比较的字符串中每个位置字符在字典中的位置
                int prev=index[words[i-1].charAt(j)-'a'];
                int cur=index[words[i].charAt(j)-'a'];
                //只要一个满足
                if(prev<cur){
                    vaild=true;
                    break;
                }else if(prev>cur){
                    return false;
                }
            }
            //特殊情况需要处理,设 strs[i] 的长度为 m,strs[i] 的长度小于 strs[i−1] 的长度且 strs[i−1] 的前 m个字符与 strs[i−1]的前 m 个字符相等,
            //此时 strs[i−1]的字典序大于 strs[i] 的字典序。
            if(!vaild){
                if(words[i-1].length()>words[i].length()){
                    return false;
                }
            }
        }
        return true;
    }
}
View Code

 

标签:总结,String,strs,public,算法,new,order,字典
From: https://www.cnblogs.com/chenghaixiang/p/16593221.html

相关文章

  • 【总结笔记】设计模式
    工厂模式介绍https://zhuanlan.zhihu.com/p/83535678工厂模式利用C++多态的特性,将存在继承关系的类,通过一个工厂类创建对应的子类对象。工厂模式可分别实现为简单工厂......
  • 2022/8/16 总结
    A.数字第一眼以为是数论,第二眼是\(\mathtt{DP}\);本题又名卡常技术综合运用,如何将30s的大样例卡进10s;Solution\(\mathtt{DP+BitSet}\);如果直接\(\matht......
  • Codeforces 阶段性总结提升
    卡在蓝名有一段时间了,对七月份以来的几场cf做一个总结,以求提升。总结提升:(最重要的点)常卡住的在自己平均实力水平以内的题:贪心。https://codeforces.com/contest/170......
  • 【考试总结】2022-08-15
    背包将\(R_i\)缩小到颜色物品数量级别,于是\(\sumR\len\)。计算框架显然是优先队列弹出时找后继。需要满足后继总和一定大于当前元素,而且转移路径是唯一的按照次小......
  • 算法-实验一
    算法设计与分析实验一第一题公元5世纪,我国古代数学家张丘建在他所撰写的《算经》中,提出了这样的一个问题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、......
  • dev report 带统计 非交叉表的总结
    设计报表准备的东西很琐碎,远比简单的gridview怼数据源等,实现起来慢的多.特别是已有的列子不能满足需求的时候,比如交叉报表,列字段无法放在统计字段的右侧,碰到有备......
  • 最近一周的总结 arm的基本学习
    1.多处理流水线、双ALU流水线、超标量流水线的了解  A系列:32位RISC处理器,拥有16个32位可见的寄存器    eabi-嵌入式应用程序2进制接口 2.cpu的组成:ALU-运算......
  • jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
      //弹层操作$(function(){//视频播放$("a[href^='#video']").each(function(index,element){$(this).click(function(){......
  • 常见算法
    基本查找publicclassA01_BasicSearchDemo1{  publicstaticvoidmain(String[]args){    //基本查找\顺序查找    //核心:    //从0索......
  • EcmaScript 2020 新特性总结
    1.可选操作符“?.” 这个操作符用来获取后端对象可能的不存在的属性值的时候十分有用日常开发中,当需要访问嵌套在对象内部好几层的属性时使用 letnestedProp=......