[Haskell on HackerEarth] Toggle String
来源:互联网 发布:阿里云国际版试用 编辑:程序博客网 时间:2024/05/29 02:47
题目链接
输入:一个英文字符串
输出:转换所有字母大小写后的字符串,即小写转为大写,大写转为小写
Tips:
1. isUpper, isLower, toLower 和 toUpper 在模块 Data.Char 里
2. interact 函数的签名为 interact :: (String -> String) -> IO ()
,使用它的一般方法通俗的讲就是写一个从输入字符串到输出字符串的函数,作为它的参数
3. 注意缩进问题,现在我还没弄明白Haskell具体的缩进规则是什么,但是这里where块的缩进很重要
import Data.Charmain = interact myConvert where myConvert = map f f ch | isUpper ch = toLower ch | isLower ch = toUpper ch | otherwise = ch
Java8加入了对函数式编程更多的支持,这道题目也可以用Java8中的函数式方法来写,其中最【麻烦】的点在于外部和stream的交互。在Haskell中,主体是纯函数,因此有副作用的Monad是其中的难点,与之相对应的在Java中加入【非土著】的stream也是其中的难点。
import java.io.IOException;import java.io.PrintWriter;import java.io.InputStream;import java.io.OutputStream;import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.List;import java.util.ArrayList;class ToggleString { public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); PrintWriter writer = new PrintWriter(System.out); reader.lines() .flatMap((String s) -> { List<Character> result = new ArrayList<>(); for (char c : s.toCharArray()) result.add(c); return result.stream(); }).map(ch -> { if (Character.isUpperCase(ch)) return Character.toLowerCase(ch); else return Character.toUpperCase(ch); }).forEach(writer::print); writer.close(); reader.close(); }}
1 0
- [Haskell on HackerEarth] Toggle String
- [Haskell on HackerEarth] Palindromic String
- [Haskell on HackerEarth] Factorial!
- [Haskell on HackerEarth] Magical Word
- [Haskell on HackerEarth] Find Product
- [Haskell on HackerEarth] Count Divisors
- [Haskell on HackerEarth] Min-Max
- [Haskell on HackerEarth] Binary Queries
- [Haskell on HackerEarth] Modify Sequence
- [Haskell on HackerEarth] Roy and Profile Picture
- [Haskell on HackerEarth] Monk and Digital World
- [Haskell on HackerEarth] Monk and Welcome Problem
- [Haskell on HackerEarth] Life, the Universe, and Everything
- Install Haskell on Ubuntu
- Android WiFi Toggle ON/OFF流程分析
- Android WiFi Toggle ON/OFF流程分析
- Android WiFi Toggle ON/OFF流程分析
- Install Haskell on Ubuntu and CentOS
- 蓝桥杯 算法训练 输出米字形
- 机器学习----笔记之k-近邻算法(2)
- Java数组
- Spark安装 测试
- JavaScript对象学习
- [Haskell on HackerEarth] Toggle String
- atime,mtime,ctime以及find指令
- jar文件打不开解决的办法
- Vim配置#Vim PHP函数 Tab自动提示功能
- 即时通讯openfire4.1.1+smack4.1.0
- java笔记【1】
- JavaScript变量作用域
- POJ 3646 The Dragon of Loowater G++
- fantastic summary for backtrack