字母

字典树存在的意义

喜你入骨 提交于 2020-02-10 08:22:01
1. 字典树   曾经遇到这样一个问题:很多单词,这些单词只含小写字母,并且不会有重复的单词出现,现在要统计出以某个字符串为前缀的单词数量,单词本身也是自己的前缀。先看看用常规的方法解决这个问题的复杂度。假设单词表容量为M,需要统计的前缀数量为N,前缀的平均长度是L,则常规算法思路是:对于每个前缀搜索每个单词,看看这个前缀是不是这个单词的前缀,如果是数量+1。这样的话时间复杂度为O(N*M*L),如果N相当大的话,这个算法的复杂度将无法接受啦。其实这就是字典树的典型应用啦。   我们先学习一下字典树,在解决上面的问题。字典树又称trie树,从名字上看很显然是一种树形结构了。字典树有以下几个特点:1.利用串的公共前缀,节约内存;2.根结点不包含任何字母;3.其余结点仅包含一个字母;4.每个结点的子节点包含字母不同。看看一个例子吧:下面就是一个字典树(图片来自百度百科)    上面的树就是一颗典型的字典树了,字典树中存储的单词包括:abc、abcd、abd、b、bcd、efg、hig,即:所有标记为红心的才是单词的结尾字母。对比上面的trie树的特点仔细看一下,理解一下到底什么是字典树。实际上字典树包括常见的两种种操作是:查找和插入操作。我觉得有必要看看字典树的基础代码:( 代码 ) View Code 1 //字典树的每个节点 2 struct node 3 { 4 bool

输入一个字母,若是小写字母,则变为大写输出,否则,原样输出。

こ雲淡風輕ζ 提交于 2020-02-05 17:59:30
# include <stdio.h> int main ( ) { char ch ; scanf ( "%c" , & ch ) ; ( ( ch >= 'a' ) && ( ch ) <= 'z' ) ? ( ch = ch + 'A' - 'a' ) : ch ; printf ( "%c" , ch ) ; return 0 ; } 对于大小写的转化方法有很多常用if语句、switch语句之类的分类处理,来达到预期目标。 来源: CSDN 作者: 杜小前 链接: https://blog.csdn.net/Du798566/article/details/104185010

三维变幻字母(3D Fluctuating Letters)

时光怂恿深爱的人放手 提交于 2020-02-05 11:33:41
三维变幻字母(3D Fluctuating Letters) 示例 HTML CSS JS 示例 HTML #canvas-wrapper(aria-label='One Up') CSS body { height : 100vh ; background-color : #101010 ; // black margin : 0 ; padding : 0 ; overflow : hidden ; } JS /* * 3D ONE UP TYPO * Made with ThreeJS - Enjoy! * https://threejs.org/ * * Experimenting with porcelain typography. * Move the cursor to zoom in/out and float around the typo space. * On mobile touch + drag screen to zoom in/out and float. * * #015 - #100DaysOfCode * By ilithya | 2019 */ const nearDist = 0.1 ; const farDist = 7000 ; const scene = new THREE . Scene ( ) ; const camera =

解决a标签下的image元素下方的空白

好久不见. 提交于 2020-02-05 00:57:51
因为欧洲人对于英文字母的gqp等带有小尾巴的字母的写入需求,会有一条baseline用于字母主体写入,比如abcdefghijk等字母,仔细观察会发现它们之中有一条隐藏的线将字母的主体水平对齐,gh这类字母对比a虽然一个向上超出,一个向下超出,但它们的字母主体是水平对齐的,在a字母的下方就是这条水平线,叫baseline。写过英文字帖的都知道英文文本有四条线进行规范,从上往下第三条线就是它的baseline。第四条线是bottom,第一条线是top。 对于解决a标签下的image元素的空白: 1.设置a标签下的img元素的vertical-align属性设置为bottom。 2.设置a标签为display为block,img元素的display为block,使其遵从盒子的原则。(注意两个都要添加这个属性) 3.设置a标签的font-size为0。(因为a标签本就是用于作为文字的包裹的元素)(推荐) 来源: https://www.cnblogs.com/Syinho/p/12262179.html

双拼输入法(自然码)

…衆ロ難τιáo~ 提交于 2020-02-04 21:23:04
特殊情况 1. 拼音只有1个字母的,双打该字母: aa(啊)、ee(额)、oo(喔) ; 2. 拼音为2个字母的,打出这2个字母:ai(爱)、ei(诶)、er(而)、ao(澳)、ba(爸)、wo(我)、bi(比); 3. 无声母、且韵母长度超过2个的,首字母+韵母:ah(ang昂)。 来源: https://www.cnblogs.com/tthua/p/12260897.html

leetCode242 有效的字母异位词

≡放荡痞女 提交于 2020-02-04 13:32:21
引言: 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 示例 1: 输入: s = "anagram", t = "nagaram" 输出: true 示例 2: 输入: s = "rat", t = "car" 输出: false 说明: 你可以假设字符串只包含小写字母。 题目分析: 1.什么是字母异位词? 所谓字母异位词是指,两个字符串中含有相同类型且相同数目的字母,只是字母的排列顺序出现了异位。 比如,在题目中的"anagram"和"nagaram",两者都含有3个a,1个n,1个g,1个r,1个m。 2.说明剖析:字符串中只含有小写字母。 那么说明只可能出现26中字母。我们需要做的就是统计每一个字符串中出现的个数,这里我们选择使用一个长度为26的一个int数组。 3.判断两个字符串是否具有相同数量的字母,那么我们可以分别遍历两个字符串,统计每一个的字符串的数量,一个使用正,一个使用负。相同的话对应位置的数量应该为0. 具体的代码实现: 1 class Solution { 2 public boolean isAnagram(String s, String t) { 3 int[] standard=new int[26]; 4 for (int i = 0; i <s.length() ; i++) { 5 standard[s

统计字母出现的次数

不问归期 提交于 2020-02-03 07:49:14
统计字母出现的次数 import java . util . * ; public class 统计字母出现的次数 { public static void main ( String [ ] args ) { System . out . println ( "请输入一个字符串!" ) ; Scanner x = new Scanner ( System . in ) ; String a = x . nextLine ( ) ; System . out . println ( a ) ; int [ ] b = new int [ 26 ] ; char [ ] v = a . toCharArray ( ) ; for ( char c : v ) { b [ c - 'a' ] ++ ; } for ( int i = 0 ; i < b . length ; i ++ ) { if ( b [ i ] > 0 ) System . out . println ( ( char ) ( i + 'a' ) + "出现的次数" + b [ i ] ) ; } } } 知识点: 字符串转化字符方法:toCharArray(); 属于java.util 来源: CSDN 作者: sleep_i_like 链接: https://blog.csdn.net/sleep_i

LeetCode【520】 检测大写字母

南笙酒味 提交于 2020-02-01 07:39:36
题目: 给定一个单词,你需要判断单词的大写使用是否正确。 我们定义,在以下情况时,单词的大写用法是正确的: 全部字母都是大写,比如"USA"。 单词中所有字母都不是大写,比如"leetcode"。 如果单词不只含有一个字母,只有首字母大写, 比如 “Google”。 否则,我们定义这个单词没有正确使用大写字母。 示例 1: 输入: “USA” 输出: True 示例 2: 输入: “FlaG” 输出: False 注意: 输入是由大写和小写拉丁字母组成的非空单词。 public boolean detectCapitalUse ( String word ) { if ( word == null || word == "" ) return false ; int count = 0 ; for ( int i = 0 ; i < word . length ( ) ; i ++ ) { if ( word . charAt ( i ) <= 'Z' && word . charAt ( i ) >= 'A' ) count ++ ; } //三种情况 ,大写字母在首位、全是大写字母、无大写字母,return true; if ( count == word . length ( ) || count == 1 && word . charAt ( 0 ) >= 'A' &&

蓝桥杯题目练习(JAM计数法)

末鹿安然 提交于 2020-01-31 23:52:49
算法训练VIP JAM计数法 题目描述 Jam是个喜欢标新立异的科学怪人。他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩。在他的计数法中,每个数字的位数都是相同的(使用相同个数的字母),英文字母按原先的顺序,排在前面的字母小于排在它后面的字母。我们把这样的“数字”称为Jam数字。在Jam数字中,每个字母互不相同,而且从左到右是严格递增的。每次,Jam还指定使用字母的范围, 例如,从2到10,表示只能使用{b,c,d,e,f,g,h,i,j}这些字母。如果再规定位数为5,那么,紧接在Jam数字“bdfij”之后的数字 应该是“bdghi”。(如果我们用U、V依次表示Jam数字“bdfij”与“bdghi”,则U< V ,且不存在Jam数字P,使U< P< V )。你的任务是:对于从文件读入的一个Jam数字,按顺序输出紧接在后面的5个Jam数字,如果后面没有那么多Jam数字,那么有几个就输出几个。 输入 有2行,第1行为3个正整数,用一个空格隔开: s t w (其中s为所使用的最小的字母的序号,t为所使用的最大的字母的序号。w为数字的位数,这3个数满足:1≤s< T≤26, 2≤w≤t-s ) 第2行为具有w个小写字母的字符串,为一个符合要求的Jam数字。 所给的数据都是正确的,不必验证。 输出 最多为5行

DAY 2

杀马特。学长 韩版系。学妹 提交于 2020-01-31 11:13:56
DAY 2 1.java入门知识 1.(1)关键字:组成字母全部小写; 注:goto和const是保留字; (2) 标识符:作用是给类,接口等取名; 规则:英文大小写字母,数字,¥和下划线; 注:不能以数字开头,不能是Java中的关键字(小写),不能有空格; 2.常见命名规则 (1)包(文件夹): 区分相同的类名,单级如yang,多级如yang.cast; (2)类或接口: 一个单词的话,单词首字母必须大写,如Student;多个单词的话,每个单词首字母必须大写,如:HelloWorld; (3)方法或变量: 如果一个单词,单词首字母小写,如main;多个单词,从第二个单词开始首字母大写,如studentAge,shoeName; 3.常量 (1) 一个单词:全部大写,如PI; 多个单词:每个字母大写,用下划线隔开每个单词,如STUDENT_MAX_AGE; (2) 字符串常量:双引号括起来,如“hello”; 整数常量:1234等; 字符常量:单引号括起来,如’A‘,’c‘等,但是’ab‘就不行,因为单引号里只能有一个字符,’0‘也是一个字符; 布尔常量:true & false; 空常量:null。 /* 分析: A: 要写一个Java程序,首先必须定义一个类 B: 数据能够输出,说明程序可以独立运行,而程序独立运行,必须使用main方法 C:数据输出在控制台,必须使用输出语句